gpt4 book ai didi

php - 如何防止 Php 的 DOMDocument 编码 html 实体?

转载 作者:可可西里 更新时间:2023-11-01 13:27:17 24 4
gpt4 key购买 nike

我有一个函数可以使用 Php 的 DOMDocument 替换字符串中 anchor 的 href 属性。这是一个片段:

$doc        = new DOMDocument('1.0', 'UTF-8');
$doc->loadHTML($text);
$anchors = $doc->getElementsByTagName('a');

foreach($anchors as $a) {
$a->setAttribute('href', 'http://google.com');
}

return $doc->saveHTML();

问题是 loadHTML($text) 包围了 doctype、html、body 等标签中的 $text。我尝试通过这样做而不是 loadHTML() 来解决这个问题:

$doc        = new DOMDocument('1.0', 'UTF-8');
$node = $doc->createTextNode($text);
$doc->appendChild($node);
...

不幸的是,这会编码所有实体(包括 anchor )。有谁知道如何关闭它?我已经彻底查看了文档并尝试破解它,但无法弄清楚。

谢谢! :)

最佳答案

$text is a translated string with place-holder anchor tags

如果这些占位符有一个严格的、定义明确的格式,一个简单的 preg_replacepreg_replace_callback可能会成功。
一般而言,我不建议使用正则表达式摆弄 html 文档,但对于定义明确的小型子集,它们是合适的。

关于php - 如何防止 Php 的 DOMDocument 编码 html 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/792345/

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