0
我正在使用的代码为波纹管获得通过DOM文档的内容通缉形式HTML,如何关闭将特殊字符转换为DOMDocument中的实体?
$subject = 'some html code';
$doc = new DOMDocument('1.0');
$doc->loadHTML($subject);
$xpath = new DOMXpath($doc);
$result = $xpath->query("//div");
$docSave = new DOMDocument('1.0');
foreach ($result as $node) {
$domNode = $docSave->importNode($node, true);
$docSave->appendChild($domNode);
}
echo $docSave->saveHTML();
的问题是,如果在HTML $主题像空间或新线spcial字符,则转换到html权利。输入HTML是远形式,良好的作风是和一些特殊的字符也是在标签路径内,例如:
$subject = '<div><a href='http://www.site.com/test.php?a=1&b=2, 3,
4'></a></div>';
会产生:中
<div><a href='http://www.site.com/test.php?a=1&b=2,%203,%0A%204'></a></div>
代替:
<div><a href='http://www.site.com/test.php?a=1&b=2, 3,
4'></a></div>'
如果要保留无效的html,可以省略将特殊字符转换为其实体的方法?
我试过把这个标志设置为substituteEntities为假,但我没有改善,也许我用它错了?一些代码示例会非常有帮助。
我认为他们完全没问题。这两个网址都有效且相同。 – 2012-02-04 17:05:40
这些不是HTML实体。它们是URL特定的转义。至少libxml的PHP前端[不提供任何选项](http://php.net/manual/en/libxml.constants.php)来影响这种规范化。 – mario 2012-02-04 17:08:40
[空格和换行符在URL中实际上是无效的。](http://stackoverflow.com/questions/1547899/which-characters-make-a-url-invalid/1547940#1547940)这只是浏览器(或DOMDocument),它可以正确处理它们。 – Gumbo 2012-02-04 17:09:01