我正在尝试用PHP解析一些html以添加一些节点,但是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属性出了问题。
关于如何解决这个问题的任何想法?
测试/播放网址:http://ideone.com/TsDhI3
答案 0 :(得分:2)
尝试以正确的格式编写HTML,其中的属性值由双引号分隔,而不是单引号,因此它们不会被编码。 Javascript识别由单引号分隔的字符串。
以下是一个例子:
$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";
这是工作版本 - http://ideone.com/DjEyUX