[PHP] preg_replace, ik kom er niet uit.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • superbikkel
  • Registratie: Juli 2001
  • Laatst online: 13:33
code:
1
2
$text = preg_replace("#\\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png|php)))\\[/img\]#sie",
"'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);


Dit stukje code komt uit PHPBB, en controleert of een link een plaatje is. Ik heb php er zelf aan toegevoegd, en dat werkt. Als er echter aan de URL een parameter wordt meegegeven, bv
code:
1
http://www.test.com/test.php?var=123

dan werkt krijg je een URL ipv een plaatje. Ik zit er al een tijdje op te puzzelen dat ie een URL met parameter toch als plaatje accepteert, gezocht op GOT en Google, maar ik snap deze functie dus echt niet.

Kan iemand me een stukje op weg helpen?

[ Voor 42% gewijzigd door superbikkel op 28-10-2004 23:08 ]


Acties:
  • 0 Henk 'm!

  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07 18:43
een uitgebreide beschrijving van reguliere expressies is te vinden op http://nl2.php.net/manual/nl/pcre.pattern.syntax.php

maar je krijgt dan zoiets:

PHP:
1
2
$text = preg_replace("#\\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png|php)))(\?+.*)?\\[/img\]#sie",
"'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '\\6' . '[/img:$uid]'", $text);

door achter (jpg|jpeg|gif|png|php))) ook nog eens (\?+.*)? te zetten

(\?+.*) in zijn geheel is dan door de ? optioneel,
maar moet wel iig met een ? beginnen (\?+)
en kan worden gevolgd door een willekeurig aantal andere karakters erachter (.*)

[ Voor 10% gewijzigd door pjotrk op 28-10-2004 22:09 ]


Acties:
  • 0 Henk 'm!

  • superbikkel
  • Registratie: Juli 2001
  • Laatst online: 13:33
Bedankt, dat werkt dus perfect.