【发布时间】:2016-01-30 08:03:47
【问题描述】:
我有以下test.php 文件,当我运行它时,结束</h1> 标记被删除。
<?php
$doc = new DOMDocument();
$doc->loadHTML('<html>
<head>
<script>
console.log("<h1>hello</h1>");
</script>
</head>
<body>
</body>
</html>');
echo $doc->saveHTML();
这是我执行文件时的结果:
PHP Warning: DOMDocument::loadHTML(): Unexpected end tag : h1 in Entity, line: 4 in /home/ryan/NetBeansProjects/blog/test.php on line 14
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<script>
console.log("<h1>hello");
</script>
</head>
<body>
</body>
</html>
那么,为什么要删除标签?它是一个字符串,所以它不应该忽略它吗?
【问题讨论】:
-
我认为标签已被删除,因为它位于脚本元素中,因此可能需要转义斜杠。尝试将
hello
放在正文中,看看会发生什么。 -
它在体内做同样的事情。但是,我确实读过
loadXML()支持这一点。我试过了,它没有删除标签,但是当我加载外部 html 文件时它无效时我得到错误。 -
如果你颠倒你的引号,或者像这样转义它
console.log(\"<h1>hello</h1>\"); -
不,这些方法都不起作用。
标签: php dom domdocument