View Full Version : Reguljära uttryck
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:[/kod]<pre>
$adress = eregi_replace("(\[URL=)(http|https|ftp)(([A-Za-z0-9.\-])*)([a-zA-Z0-9]))(\]*)([a-zA-Z0-9]?)(\[\/URL\])","<A HREF=\"\\2\\3\" TARGET=_blank>\\5</A>",$adress);
[/kod]
------------------
woodi
[url="http://www.johan-skog.nu/ff1"]Svenska FF1 (http://www.adressen.se )
www.johan-skog.nu (http://www.johan-skog.nu)
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!
------------------
woodi
Svenska FF1 (http://www.johan-skog.nu/ff1)
www.johan-skog.nu (http://www.johan-skog.nu)
emission
2000-05-10, 20:15
$adress = eregi_replace("(\[URL=)((http://|https://|ftp://|mailto:)(([[:alnum:]]|[[:punct:]])*))\](([[:alnum:]]|[[:punct:]])*)\[/URL\]","<a href=\"\\2\">\\6</a>",$adress);
Öh, hur lär man sig sånt?
/Swey
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! ;)
------------------
woodi
Svenska FF1 (http://www.johan-skog.nu/ff1)
www.johan-skog.nu (http://www.johan-skog.nu)
sgtpepper
2000-05-10, 20:47
Ö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
------------------
per@svanstrom.nu
www.svanstrom.nu (http://www.svanstrom.nu)
Tack men jag pratade om PHP såklart.
Det är ju det som diskuteras här.
------------------
/mvh Swey
Programmera Php (http://www.swe.f2s.com/)
swey@tjohoo.se
Phorpher
2000-05-10, 20:51
"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...
------------------
- Erik Hellström -
http://3d.burken.nu
sgtpepper
2000-05-10, 21:00
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.
------------------
per@svanstrom.nu
www.svanstrom.nu (http://www.svanstrom.nu)
(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!
------------------
woodi
Svenska FF1 (http://www.johan-skog.nu/ff1)
www.johan-skog.nu (http://www.johan-skog.nu)
Aha, fungerar det i C++?
Annars kanske man kan sno källkoden från PHP.
------------------
/mvh Swey
Programmera Php (http://www.swe.f2s.com/)
swey@tjohoo.se
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("(\]|[[:punct:]])*))\](([[:alnum:]]|[[:punct:]]|[ÅåÄäÖö])*)\[/url\]","<a href=\"\\2\">\\6</a>",$adress);
------------------
woodi
[url="http://www.johan-skog.nu/ff1"]Svenska FF1 ()((http://|https://|ftp://|mailto:)(([[:alnum:)
www.johan-skog.nu (http://www.johan-skog.nu)
emission
2000-05-10, 21:29
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! ;)
------------------
----------------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB
Norrköping
ASP/VB/Perl/PHP/Tango
[Redigerat av emission den 10 maj 2000]
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.
------------------
/mvh Swey
Wadde Hadde Dudde Da
Programmera Php (http://www.swe.f2s.com/)
swey@tjohoo.se
vBulletin® v3.8.6, Copyright ©2000-2013, Jelsoft Enterprises Ltd.