1
我试图用PHP解析一些html以添加一些节点,但是DOMDocument-> saveHTML的输出没有像预期的那样工作,原因是href属性是编码。DOMDocument-> saveHTML与预期的href属性无法正常工作
这是为了检查错误输出的简单代码:
$html = "<a href='javascript:console.log(\"klk\");'>click here</a>";
$doc = new DOMDocument();
$doc->loadHTML($html);
echo $html . "\n";
echo "-----------------\n";
echo $doc->saveHTML($doc->getElementsByTagName('a')[0]) . "\n";
,这里是输出:
<a href='javascript:console.log("klk");'>click here</a>
-----------------
<a href="javascript:console.log(%22klk%22);">click here</a>
正如你可以看到出问题时将href属性。
任何关于如何解决这个问题的想法?
测试/ Play网址:http://ideone.com/TsDhI3
这只是一个例子,问题是,HTML来自很多来源,我不能保修怎么HTML被创建... – xabi
DOMDocument()功能是为正确的HTML构建的。如果您的应用程序从不受控制的源发出乱码的HTML输入,则应在使用它之前使用实用程序对其进行清理。此库为http://htmlpurifier.org/docs或http://php.net /manual/en/book.tidy.php – motanelu