[PHP|REGEX] Zoeken iframe src in string

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 06:31
Ik probeer uit een string alle iframes te filteren die niet beginnen met een bepaalde url.

Stel ik heb de volgende string:
code:
1
2
3
<iframe src="http://www.google.nl" width="100px" height="200px"></iframe>
<iframe src="http://google.nl" width="100px" height="200px"></iframe>
<iframe src="http://www.test.nl" width="100px" height="200px"></iframe>


Ik heb het volgende nu:

PHP:
1
2
3
4
5
$domains = array('google.nl', 'example.org');

$urls = implode("|", $domains);

preg_match_all("/<iframe[^>]+?src=([\"'])[^\"']http://[.*]([^$urls])[.*][^\"']*(\\1)[^>]*>/is", $string, $matches);


In dit geval moet dus alleen de iframe met src http://www.test.nl gevonden worden.

Ziet iemand de fout?

Ik blijf er iig vrij nuchter onder....


Acties:
  • 0 Henk 'm!

  • Pyrus
  • Registratie: November 2001
  • Laatst online: 20-09 21:30

Pyrus

Hardknock life

je escaped de punten in tussen domein en tld niet :)

LinkedIn


Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 19-09 21:26

DataGhost

iPL dev

Ik zie wel meer fouten

- Je vermeldt niet wat er fout gaat, wat je voor resultaat krijgt en wat je voor resultaat verwacht
- Je gebruikt [^$urls], wat hoogstwaarschijnlijk neerkomt op 'match hier bijna geen enkel teken'
- Je matcht na het eerste aanhalingsteken elk teken behalve een aanhalingsteken, waardoor de http die erna komt nooit zal matchen

Dit om te beginnen. Hopelijk helpt het je op weg.

Edit1: Je gebruikt trouwens ook greedy .*
Edit2: binnen [ ]
Edit3: als ik zie hoe je dit met regexen aanpakt, raad ik je aan het probleem op te splitsen in een deel met preg_match_all en een deel met stristr

[ Voor 23% gewijzigd door DataGhost op 03-02-2007 21:08 ]