PDA

View Full Version : Reguljära uttryck


woodi
2000-05-10, 19:11
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)

nicclas
2000-05-10, 19:39
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

woodi
2000-05-10, 19:58
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);

Swey
2000-05-10, 20:22
Öh, hur lär man sig sånt?

/Swey

woodi
2000-05-10, 20:39
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)

Swey
2000-05-10, 20:48
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)

nicclas
2000-05-10, 21:02
(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

woodi
2000-05-10, 21:02
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)

Swey
2000-05-10, 21:11
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

woodi
2000-05-10, 21:24
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]

Swey
2000-05-17, 11:55
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