gpt4 book ai didi

domdocument - PHP DomDocument 在 CLI 和 Web 浏览器中的行为不同

转载 作者:搜寻专家 更新时间:2023-10-31 21:17:36 28 4
gpt4 key购买 nike

我正在使用以下代码:

$doc = new DOMDocument();
$doc->loadHTML("<i><p><strong>From: fsong | #001</strong><br/>I hate you DomDocument :(.</p></i><br/>you'd be surprised<br/>");
echo $doc->saveHTML();

在 CLI 中运行它让我兴奋

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>
<i><p><strong>From: fsong | #001</strong><br>I hate you DomDocument :(.</p></i><br>you'd be surprised<br>
</body></html>

在通过网络浏览器运行时返回:

Warning: DOMDocument::loadHTML(): Unexpected end tag : i in Entity, line: 1 in /home/xx/www/test/topic_archiver_test.php on line 50
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>
<i></i><p><strong>From: fsong | #001</strong><br>I hate you DomDocument :(.</p>
<br>you'd be surprised<br>
</body></html>

现在我意识到在 (i) 标记内嵌套 (p) 标记会破坏 HTML 规则,但我不是负责 HTML 的人。由于某种原因,CLI 模式会像原始文档一样返回文档,而网页版本会提前关闭 (i) 标记以保持 HTML 格式正确。

我的 php.ini 配置中是否存在导致行为差异的内容?我查看了官方文档 ( http://www.php.net/manual/en/dom.configuration.php ),似乎没有 DomDocument 的任何配置文件或设置。

最佳答案

出于某种原因,它似乎正在尝试验证 HTML。我在运行 php 5.3.5 和 libxml 2.7.6 时没有遇到任何错误。

忽略警告的一种方法是在前面加上“@”字符,当然这是一种 hack。

@$dom->saveHTML();

关于domdocument - PHP DomDocument 在 CLI 和 Web 浏览器中的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5295496/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com