我有一个使用 PHP 的 DOMDocument 替换字符串中锚点的 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);
...
不幸的是,这对所有实体(包括锚)进行了编码。有谁知道如何关闭这个?我已经彻底查看了文档并尝试破解它,但无法弄清楚。
谢谢!:)