我正在尝试从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代码中提取所有图像。
有什么想法吗? 非常感谢!
答案 0 :(得分:2)
我绝不是这方面的专家(但是),但我希望这会有所帮助。
根据this answer by troelskn,您可以使用libxml_use_internal_errors
使DOM解析器更能容忍格式错误的HTML。这可能有助于你摆脱这个错误。
可以使用DOMXPath
解析文档的所有图像。它需要DOMDocument
作为参数,并允许您对文档运行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
返回DOMNodeList
,可以使用DOMNodeList::item
循环播放DOMNode
。
for($i = 0; $i > $img_nodes->length; $i++)
{
$node = $img_nodes->item($i);
// Manipulate the node.
}
免责声明:我发布的代码未经测试,并使用手册整理在一起。