[php] regexp gebruiken om url's te filteren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 06:31
Ik wil een url filter maken die bepaalde domeinen uit een string filtert.

Op dit moment heb ik het volgende:

PHP:
1
2
3
$string = "een tekst met [img]'http://www.google.nl/plaatje.gif'>[/img] daarna ook nog een [img]\"www.nu.nl/anderplaatje.jpg\">[/img]gaaf </a> he";

preg_match_all("/[img](\"|')(.*?)(google|nu)(.*?)(\"|')[/img]/is", $string, $matches);


Wat er nu gebeurt is dat hij de juiste domeinen vindt: google en nu, maar dat hij de 2e match volledig van de img src van got.nl tot en met de "> van nu.nl loopt. Dit komt omdat hij zoekt op google of nu, maar vervolgens over de afsluitende tag (>) van got.nl heenspringt.

Ik heb dit geprobeerd op te lossen met een [^>], maar dat lost niets op. Hoe kan ik er voor zorgen dat hij elke <img> op zichzelf bekijkt en nooit buiten de <> tags komt van een img? De regexp tutorials hebben me nog geen oplossing kunnen geven, en via de search heb ik ook niets gevonden hierover.

Ik blijf er iig vrij nuchter onder....


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Dat komt uiteraard door de .+? tussen <img en src=
zoiets zou al beter moeten werken:
code:
1
/<img[^>]+?src=([\"'])[^\"']*(google|nu)[^\"']*(\\1)[^>]*>/is

[ Voor 65% gewijzigd door crisp op 04-06-2005 08:42 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
crisp schreef op zaterdag 04 juni 2005 @ 08:30:
Dat komt uiteraard door de .+? tussen <img en src=
zoiets zou al beter moeten werken:
code:
1
/[img]([\"'])[^\"']*(google|nu)[^\"']*(\\1)[^>]*[/img]/is
Mag je er dan niet dit van maken:
code:
1
/[img]([\"'])[^\\1]*(google|nu)[^\\1]*(\\1)[^>]*[/img]/is

of is dat invalid syntax?

[ Voor 13% gewijzigd door Michali op 04-06-2005 10:54 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Michali schreef op zaterdag 04 juni 2005 @ 10:54:
[...]

Mag je er dan niet dit van maken:
code:
1
/<img[^>]+?src=([\"'])[^\\1]*(google|nu)[^\\1]*(\\1)[^>]*>/is

of is dat invalid syntax?
Je kan geen back reference in een character class gebruiken...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
crisp schreef op zaterdag 04 juni 2005 @ 11:09:
[...]

Je kan geen back reference in een character class gebruiken...
Ok dat wilde ik dus weten, thanks :P

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 06:31
Bedankt, ik had inderdaad wel aan de .*? tussen de "" gedacht, maar niet die tussen de img en src.

Ik blijf er iig vrij nuchter onder....

Pagina: 1