在 DOMDcocument 中使用 insertBefore 和 WordPress 响应时编码问题

Problem with encoding when use insertBefore in DOMDcocument with WordPress response

提问人:gassiopea 提问时间:7/18/2023 最后编辑:Professor Abronsiusgassiopea 更新时间:7/18/2023 访问量:25

问:

我有一个带有html的php变量,我想对DomDocument进行一些更改,例如插入一个新标签:

$dom->getElementsByTagName('div')->item(0)->insertBefore($new_element, $first_child);

一切正常,但是当存在特殊字符(如à,è,ò)时,响应是类似

我尝试使用经典指令,例如:

<?xml version="1.0" encoding="UTF-8"?> before html content

DOMDocument('1.0', 'UTF-8')

utf8_decode()

这解决了所有 html 内容的一般问题,但是当我使用

$dom->getElementsByTagName('div')->item(0)->insertBefore($new_element, $first_child);

它返回这些字符,就像添加的这个新 HMTL 元素一样

这是我的代码:

$html内容是 WordPress 的回归get_the_content()

$nomiClassi = array('namea', 'nameb');

$dom = new DOMDocument();
        
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
foreach ($nomiClassi as $nomeClasse) {
    $xpath = new DOMXPath($dom);
    $nodes = $xpath->query("//*[@class='$nomeClasse']");
    
    foreach ($nodes as $node) {
        $node->parentNode->removeChild($node);
    }
}

$new_element = $dom->createElement('h2', get_the_title()  );
$first_child = $dom->getElementsByTagName('div')->item(0)->firstChild;
$dom->getElementsByTagName('div')->item(0)->insertBefore($new_element, $first_child);
$newHtml = utf8_decode($dom->saveHTML($dom->documentElement) );

一些建议?

php wordpress xpath domdocument

评论

0赞 hakre 7/18/2023
建议:当您使用的方法出现问题时,请查阅手册:php.net/manual/en/domdocument.createelement.php - 然后仔细检查所有内容。-- 你的问题的实际答案是对$value参数的内容使用正确的编码,但我担心语言障碍太高,答案在传输中丢失了。

答: 暂无答案