2010-09-03 2 views
2

Я пытаюсь соответствовать подсвеченные части этой строки:Как совместить часть тега <iframe>?

 
<iframe maybe something here src="http://some.random.url.com/" and the string continues... 

Мне нужно, чтобы соответствовать SRC = «», если оно находится внутри тега. Тег iframe можно поместить в любом месте источника.

Заранее благодарен! :)

ответ

14

Для этого вам необходимо использовать парсер DOM. Вот пример с DOMDocument:

<?php 
    $document = new DOMDocument(); 
    $document->loadHTML(file_get_contents('yourFileNameHere.html')); 
    $lst = $document->getElementsByTagName('iframe'); 

    for ($i=0; $i<$lst->length; $i++) { 
     $iframe= $lst->item($i); 
     echo $iframe->attributes->getNamedItem('src')->value, '<br />'; 
    } 
?> 
+0

Почему с помощью DOM парсер лучше, чем просто preg_matching из часть, которую я хочу? Кажется проще просто написать один для всего этого? По-видимому, это лучше по какой-то причине, потому что он уже получил 5 больших пальцев вверх, хе-хе ... – qwerty

+1

@Nike потому что [HTML не является регулярным] (http://stackoverflow.com/questions/1732348/regex-match-open-tags -except-XHTML-самодостаточный-теги/1732454 # 1732454). HTML может быть сломан, атрибуты могут содержать символы, которые вы ожидаете найти в конце тега, теги могут быть вложенными ... все это делает регулярные выражения плохим инструментом для синтаксического анализа HTML. –

+1

@Nike Если вы просто используете регулярное выражение, вы можете сопоставить тег '