我想切断html的一些部分,我可以通过使用XPath和DomDocument来解决它,但问题是我需要结果作为HTML代码字符串.通常我会使用reg. EXPR.为此,但我不想做一个复杂的搜索模式,将标记的开头和结尾.
这是示例输入:
some html code before
<div>this <b>is</b> what I want</div>
some html after
和输出:
<div>this <b>is</b> what I want</div>
我试过这样的事情:
subject = 'some html code before
<div>this <b>is</b> what I want</div>
some html after';
$doc = new DOMDocument();
$doc->loadHTML($subject);
$xpath = new DOMXpath($doc);
$result = $xpath->query("//div/*");
echo $result->saveHTML();
但我只得到错误:
调用未定义的方法DOMNodeList :: saveHTML()
有没有人知道如何使用DomDocument和XPath将结果作为html字符串?
解决方法:
试试这个:
$subject = 'some html code before
<div>this <b>is</b> what I want</div>
some html after';
$doc = new DOMDocument();
$doc->loadHTML($subject);
$xpath = new DOMXpath($doc);
$result = $xpath->query("//div");
echo $doc->saveHTML($result->item(0)); //echoes what you want :)
saveHTML函数属于DOMDocument对象,您不能直接在节点上调用它(更不用说NodeList,这是查询返回的内容),但您可以做的是将节点作为参数传递给它.
此外,您的查询是错误的:您想要的是div元素(即// div),而不是它的子元素(// div / *).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。