2

我正在尝试从 html 代码中获取图像标签。

我有

   $parser=new DOMDocument;   

   $parser->loadHTML($this->html);
        foreach($parser->getElementsByTagName('img') as $imgNode){
         echo $parser->saveHTML($imgNode);
       }

$this->html包含大量的html代码和javascripts。

例如:

<div id='someid'>
<button id='bt' onclick='clickme()'>click me</button>
<img src='test.jpg'/>
.....
.....
more...

</div>

<div>
.....
.....
more...

我收到警告说

DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity,

我不确定如何解决这个问题,也不知道是否有更好的方法从大量 html 代码中提取所有图像。

有任何想法吗?非常感谢!

4

1 回答 1

2

我绝不是这些问题的专家(还),但我希望这在某种程度上有所帮助。

根据troelskn 的这个答案,您可以通过使用libxml_use_internal_errors. 这可能会帮助您摆脱该错误。

解析文档的所有图像可以使用DOMXPath. 它将 aDOMDocument作为参数并允许您对文档运行XPath查询。

$document = new DOMDocument();
$document->loadHTML($your_html);

// Suppress parse errors.
libxml_use_internal_errors(false);

$xpath = new DOMXPath($document)

// Find all img tags.
$img_nodes = $xpath->query('//img')

DOMXPath::query返回 aDOMNodeList可以通过 using 循环DOMNodeList::item,后者返回 a DOMNode

for($i = 0; $i > $img_nodes->length; $i++)
{
    $node = $img_nodes->item($i);
    // Manipulate the node.
}

免责声明:我发布的代码未经测试,是使用手册放在一起的。

于 2013-02-02T02:55:34.607 回答