Nu har ju inte jag provat i Perls version av r.u. men i PHP tror jag att man jag göra så här http://cgi.webforum.nu/wf/Forum12/HTML/000074.html
Fungerar det?
/nicclas @ http://www.nic-sys.se
15 svar · 589 visningar · startad av woodi
Finns det någon här som kan hjälpa mig med ett Reguljärt Uttryck som jag har bekymmer med.. Blir snart tokig om jag inte löser det..
Bakgrund
Jag håller på och utvecklar ett mer avancerat forum där jag har "stängt av" <html>-kod och gör en egen "webForum-kod"..
Nu har jag problem med en av [ url ] taggarna..
[url ]http://www.adressen.se[/url ] har jag fått att fungera, men värre är det med
[rubrik[/url ]
Har försökt med detta men det fungerar inte.. Någon som kan se ett fel eller så!?
<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Perl-kod:<pre>
$adress = eregi_replace("(\)*)([a-zA-Z0-9]))(\]*)([a-zA-Z0-9]?)(\[\/URL\])","<A HREF=\"\\2\\3\" TARGET=_blank>\\5</A>",$adress);
Nu har ju inte jag provat i Perls version av r.u. men i PHP tror jag att man jag göra så här http://cgi.webforum.nu/wf/Forum12/HTML/000074.html
Fungerar det?
/nicclas @ http://www.nic-sys.se
nicclas
Jo det fungerade med lite ändringar.. Tack!
Men jag tycker att det borde fungera med allt i samma uttryck.. Jag får kika på det senare.. Huvudsaken är att det fungerar nu!
Tack än en gång!
$adress = eregi_replace("(\[URL=)((http://|https://|ftp://|mailto:)(([[:alnum:]]|[[:punct:]])*))\](([[:alnum:]]|[[:punct:]])*)\[/URL\]","<a href=\"\\2\">\\6</a>",$adress);
Tack emission! Det var en smartare lösning på det hela..
Swey
Det är lite klurigt att få allt att fungera.. Men står man i så lär man sig!
Öh, hur lär man sig sånt?
Du kan läsa om Perl regexp här: http://www.perl.com/CPAN-local/doc/manual/html/pod/perlre.html
"Tack men jag pratade om PHP såklart."
Menar du hur man lär sig regexp i PHP eller hur man lär sig PHP i största allmänhet?
regexp ser likadant ut i perl som i PHP...
Tack men jag pratade om PHP såklart
Såklart?
Regexp'ar är inte bundna till ett specifikt språk. Det finns i många olika, bla Perl, PHP, Java (som 3-parts API) etc.
(Offtopic)
Hmmm, varför kommer alltid emission med de smartare lösningarna...
(Kanske är det därför han får kalla sig Forumledare?)
/nicclas @ http://www.nic-sys.se
PhOrPhEr
Inte riktigt.. Det kan lätt bli förvirrande när man trycker in de reguljära uttrycken i eregi_replace.. Och då menar jag först och främst utskriften av de olika delarna från uttrycket!
emission
Kom på ett "fel" i din (och min för all del) kod. Innehåller rubriken till länken å, ä eller ö så blir det fel..
Den rätta koden blir alltså:
$adress = eregi_replace("(\[url=)((http://|https://|ftp://|mailto:)(([[:alnum:]]|[[:punct:]])*))\](([[:alnum:]]|[[:punct:]]|[ÅåÄäÖö])*)\[/url\]","<a href=\"\\2\">\\6</a>",$adress);
Det kan lätt bli förvirrande när man trycker in de reguljära uttrycken i eregi_replace
Ja, det finns en slags nördig sjuka som gör att man envist vill tvinga in allt i en enda regexp. Det blir självklart med överskådligt om man delar upp det hela, och ni som gjort så hittills får gärna fortsätta så.
Man tjänar inte nödvändigtvis något på att skapa en enda regexp. Flera enkla regexp:ar kan vara mer resurssnåla än en stor avancerad.
Den ovanstående regexp:en var dock tämligen enkel och linjär, så den passar utmärkt att köra i ett "race". Sedan blir det ju lite stökigt med alla \[),-. Ser lite ut om en serietidningssvordom.
Kom på ett "fel" i din (och min för all del) kod. Innehåller rubriken till länken å, ä eller ö så blir det fel..
Så sant, så sant. Bra!
Nu tar jag upp den här tråden från graven.
Eftersom reguljära uttryck skiljer sig mellan PHP och Perl (har jag hört) så undrar jag om det finns någon manual för det speciellt för PHP?
På engelska naturligtvis.