所以我正在尝试使用<p>
解析HTML页面并查找段落(get_elements_by_tag_name('p');
)
问题在于,当我使用$element->nodeValue
时,它会返回奇怪的字符。首先使用curl将文档加载到$ html中,然后将其加载到DomDocument中。
我确定它与字符集有关。
以下是回复的一个例子:“aujourd⢢”。
提前致谢。
答案 0 :(得分:4)
我有同样的问题,现在注意到loadHTML()不再需要2个参数,所以我必须找到一个不同的解决方案。在我的DOM库中使用以下函数,我能够从HTML内容中删除时髦的字符。
private static function load_html($html)
{
$doc = new DOMDocument;
$doc->loadHTML('<?xml encoding="UTF-8">' . $html);
foreach ($doc->childNodes as $node)
if ($node->nodeType == XML_PI_NODE)
$doc->removeChild($node);
$doc->encoding = 'UTF-8';
return $doc;
}
答案 1 :(得分:3)
我通过强制转换为UTF-8来修复此问题,即使原始文本是UTF-8:
$text = iconv("UTF-8", "UTF-8", $text);
$dom = new SmartDOMDocument();
$dom->loadHTML($webpage, 'UTF-8');
.
.
echo $node->nodeValue;
PHP很奇怪:)
答案 2 :(得分:1)
这是编码问题。尝试将编码显式设置为UTF-8。
答案 3 :(得分:0)
显然,对我来说,以上方法均无效,最后我发现了以下内容:
// Create a DOMDocument instance
$doc = new DOMDocument();
// The fix: mb_convert_encoding conversion
$doc->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'));