php-将DOMDocument中的特定元素导出到字符串
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-将DOMDocument中的特定元素导出到字符串,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1483字,纯文字阅读大概需要3分钟。
内容图文
我正在使用loadHTML()函数将一些任意HTML导入DOMDocument中,例如:
$html = '<p><a href="test.php">Test</a></p>';
$doc = new DOMDocument;
$doc->loadHTML($html);
然后,我想使用DOMDocument方法更改一些属性/节点值,而我可以做到这一点.
完成这些更改后,我想导出HTML字符串(使用-> saveHTML()),而无需DOMDocument自动添加到HTML的< html>< body> …标签.
我知道为什么要添加这些内容(以确保文档有效),但是我该如何恢复已编辑的HTML(基本上是< body>标记之间的所有内容)?
我已经阅读了this post,虽然它提供了一些解决方案,但我还是希望“正确”地进行操作,即在< body>上不使用字符串替换的情况.标签. HTML的有效性不是问题,因为它是事先通过HTML净化器运行的.
有任何想法吗?谢谢.
编辑
我知道PHP 5.3.6中添加到saveHTML()的$node参数,不幸的是我坚持使用5.2.
解决方法:
也许source code会有所帮助-他们正在使用正则表达式删除不必要的字符串:
http://beerpla.net/projects/smartdomdocument-a-smarter-php-domdocument-class/
$content = preg_replace(array("/^\<\!DOCTYPE.*?<html><body>/si",
"!</body></html>$!si"),
"",
$this->saveHTML());
return $content;
saveHTMLExact()-DOMDocument具有一个设计极差的“功能”,如果要加载的HTML代码不包含< html>和< body>标签,它会自动添加它们(是的,没有任何标志可以关闭此行为).
因此,当您调用$doc-> saveHTML()时,新保存的内容现在具有< html>< body>和DOCTYPE.尝试使用代码片段时不太方便(XML也有类似的问题).
SmartDOMDocument包含一个名为saveHTMLExact()的新函数,它完全可以实现您想要的功能–它可以保存HTML,而不会像DOMDocument那样添加额外的垃圾.
此外,其他问题也提出了类似的问题:
How to saveHTML of DOMDocument without HTML wrapper?
内容总结
以上是互联网集市为您收集整理的php-将DOMDocument中的特定元素导出到字符串全部内容,希望文章能够帮你解决php-将DOMDocument中的特定元素导出到字符串所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。