我开发 PHP 应用程序已经有一段时间了。但这确实让我很挣扎。我正在使用 DomDocument 加载完整的 HTML 页面。这些页面是外部页面,可能包含 JavaScript。这超出了我的控制范围。
在某些页面上,当涉及到 JavaScript 字符串中的基本 HTML 格式时,内容并未按照预期的方式呈现。我写了一个例子来解释这一切。
<?php
$html = new DOMDocument();
libxml_use_internal_errors(true);
$strPage = '<html>
<head>
<title>Demo</title>
<script type="text/javascript">
var strJS = "<b>This is bold.</b><br /><br />This should not be bold. Where did my closing tag go to?";
</script>
</head>
<body>
<script type="text/javascript">
document.write(strJS);
</script>
</body>
</html>';
$html->loadHTML($strPage);
echo $html->saveHTML();
exit;
?>
我错过了什么吗?
编辑:我已经更改了演示。将 LoadHTML 更改为 LoadXML 现在不再起作用,演示的输出将通过 w3c 验证。另外,将 CDATA 块添加到 JavaScript 似乎没有任何效果。
Adding LIBXML_SCHEMA_CREATE
to loadHTML()
选项将解决该问题。
<?php
$html = new DOMDocument();
libxml_use_internal_errors(true);
$strPage = '<html>
<head>
<title>Demo</title>
<script type="text/javascript">
var strJS = "<b>This is bold.</b><br /><br />This should not be bold. Where did my closing tag go to?";
</script>
</head>
<body>
<script type="text/javascript">
document.write(strJS);
</script>
</body>
</html>';
$html->loadHTML($strPage, LIBXML_HTML_NODEFDTD | LIBXML_SCHEMA_CREATE);
echo $html->saveHTML();
exit();
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)