webForumDet fria alternativet

Reguljära uttryck

15 svar · 577 visningar · startad av woodi

woodiMedlem sedan feb. 20001 270 inlägg
#1

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);

------------------
woodi

Svenska FF1
www.johan-skog.nu](http://www.adressen.se)

nicclasMedlem sedan feb. 20001 050 inlägg
#2

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

woodiMedlem sedan feb. 20001 270 inlägg
#3

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
www.johan-skog.nu

emissionMedlem sedan dec. 19996 721 inlägg
#4

$adress = eregi_replace("(\[URL=)((http://|https://|ftp://|mailto:)(([[:alnum:]]|[[:punct:]])*))\](([[:alnum:]]|[[:punct:]])*)\[/URL\]","<a href=\"\\2\">\\6</a>",$adress);
SweyMedlem sedan apr. 20003 971 inlägg
#5

Öh, hur lär man sig sånt?

/Swey

woodiMedlem sedan feb. 20001 270 inlägg
#6

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
www.johan-skog.nu

sgtpepperMedlem sedan apr. 20007 588 inlägg
#7

Ö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

SweyMedlem sedan apr. 20003 971 inlägg
#8

Tack men jag pratade om PHP såklart.

Det är ju det som diskuteras här.

------------------
/mvh Swey

Programmera Php
swey@tjohoo.se

PhOrPhErMedlem sedan feb. 20002 300 inlägg
#9

"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

sgtpepperMedlem sedan apr. 20007 588 inlägg
#10

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

nicclasMedlem sedan feb. 20001 050 inlägg
#11

(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

woodiMedlem sedan feb. 20001 270 inlägg
#12

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
www.johan-skog.nu

SweyMedlem sedan apr. 20003 971 inlägg
#13

Aha, fungerar det i C++?

Annars kanske man kan sno källkoden från PHP.

------------------
/mvh Swey

Programmera Php
swey@tjohoo.se

woodiMedlem sedan feb. 20001 270 inlägg
#14

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);

------------------
woodi

Svenska FF1
www.johan-skog.nu

emissionMedlem sedan dec. 19996 721 inlägg
#15

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]

SweyMedlem sedan apr. 20003 971 inlägg
#16

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
swey@tjohoo.se

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)