2010-08-29 66 views

回答

4

你不应该使用正则表达式来解析HTML。你应该使用像DOMDocument这样的类来这样做。 DOMDocument有getElementsByTagName方法,可用于从要分析的文档检索所有标记。

下面是将回显图像的列表文件中的例子:

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

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

它更可靠,更易于使用phpQuerySimpleHTMLparser(更详细)。但对于基本提取目的,只是在寻找SRC =属性,这是矫枉过正和正则表达式其实足够

preg_match_all('/<img[^>]+src\s*=[\'\"\s]?([^<\'\"]+)/ims', file_get_contents($url), $uu); 

注意,它会产生相对路径名,大多没有网址。所以需要后处理,而phpQuery IIRC有一个标准化的快捷方式。

+0

正则表达式**不够**,这将解析你可能不想要的东西,如评论中的图像。 – HoLyVieR 2010-08-29 21:15:55

+0

@HoLyVieR,你会有一个真实世界的例子吗? Nobodys谈论解析。 – mario 2010-08-29 21:26:40