[regexp] <img>'s wegfilteren

Pagina: 1
Acties:

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Ik ben bezig met een regexp die bepaalde img's wegfiltert uit een string, waarvan de url's in mijn database staan.

Ik heb het volgende:

PHP:
1
2
3
4
5
6
7
8
$tekst = 'Hoi <IMG HEIGHT="100" 
src="http://www.kindertent.nl/development/images/smilies/emsmile.gif"> Hoi <IMG 
src="http://www.lachfabriek.nl/plaat/funplaat5/a-f-b11.jpg">';

$pattern = 
'/[img]["\'](http:\\/\\/.*?(lachfabriek.nl|62.212.77.103).+?)["\'][^>]*[/img]/ies';

print preg_replace($pattern, "", $tekst);


Waar ik mee zit is dat als de img's in deze volgorde staan, dat de regexp ze dan allebei verwijderd, terwijl alleen de 2e verwijderd moet worden. En als ik ze andersom zet wordt wel alleen de foute img verwijderd.

Ik heb in de regexp toch echt staan dat hij tussen <img en src geen ">" mag hebben, dus hij kan moeilijk die 2 img's als 1 lezen... toch?

Ik blijf er iig vrij nuchter onder....


Verwijderd

vervang
.*? en .+?
door
[^>]?

edit: oh en de ' of " voor/na de link zijn optioneel, kan ook een ? achter :)

[ Voor 77% gewijzigd door Verwijderd op 06-09-2003 18:01 ]


  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Bedankt, dat was em (bijna)

PHP:
1
$pattern = '/[img]["\']?(http:\\/\\/[^>]+?('.$urls.')[^>]+?)["\']?[^>]*[/img]/ies';

Ik blijf er iig vrij nuchter onder....


Verwijderd

je kan eventueel ook nog preg_quote($url,"/") per URL doen om de puntjes en /'s etc te escapen; hoewel het in de praktijk waarschijnljik in jouw geval weinig uitmaakt omdat je alleen op hostname/IP matched en het onwaarschijnlijk is dat er andere dingen op die puntjes gaan matchen.

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
offtopic:
BTW, ben jij de owner van kindertent.nl, k heb daar laatst een fout op gevonden

  • ThaDaNo
  • Registratie: Mei 2002
  • Laatst online: 05-04-2023
offtopic:
Ja, en ik ook... voeg je wel ff toe aan msn
Pagina: 1