这是我的代码:
<?php
$data = <<<DATA
<div>
<p>سلام</p> // focus on this line
<p class="myclass">Remove this one</p>
<p>But keep this</p>
<div style="color: red">and this</div>
<div style="color: red">and <p>also</p> this</div>
<div style="color: red">and this <div style="color: red">too</div></div>
</div>
DATA;
$dom = new DOMDocument();
$dom->loadHTML(mb_convert_encoding($data, 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($dom);
foreach ($xpath->query("//*[@*]") as $node) {
$parent = $node->parentNode;
while ($node->hasChildNodes()) {
$parent->insertBefore($node->lastChild, $node->nextSibling);
}
$parent->removeChild($node);
}
echo $dom->saveHTML();
作为我的问题标题中提到的,我的网站内容是波斯语(非英语)。但是关于代码对波斯字符不起作用。
当前输出:
.
.
<p>سلام</p>
.
.
期望输出:
.
.
<p>سلام</p>
.
.
这是什么问题,我该如何修复它?
注意:您也可以看到我已经使用了mb_convert_encoding($data, 'HTML-ENTITIES', 'UTF-8')
来使其正确显示(基于此答案),但仍然无法解决问题。