php xpathdom,php dom xpath-尝试从网站提取dom-未知编码错误

我试图从一个PHP网站中提取DOM,然后在上面运行一些xpath。代码应该很简单,但我总是会遇到编码错误。

我已经研究了错误消息,并尝试使用mb_convert_encoding()应用编码(如其他堆栈溢出文章中所述),但它没有解决问题。

我试图提取的网站使用的是UTF-8,所以使用mb_convert_encoding()函数应用UTF-8编码来修复这个问题就我所知没有多大意义。

这是我的代码,应该可以复制到其他地方。正如您所看到的,我在某个时候尝试了两种方法来应用编码。

我想我使用的是正确的函数loadHTML(),而不是loadHTMLfile()。是否可以使用“获取文件内容”提取文件以将其输入此函数?

$url = 'http://duckduckgo.com/';

if(! $file = file_get_contents($url) )

echo 'File get contents failed.';

$doc = new DOMDocument();

//$doc->loadHTML( mb_convert_encoding($file,'HTML-ENTITIES','UTF-8') );

$doc->loadHTML( '<?xml version="1.0" encoding="UTF-8"?>'.$file );

$xpath = new DOMXpath($doc);

$elements = $xpath->query("*/div[@id='logo_homepage_link']");

if (!is_null($elements)) {

foreach ($elements as $element) {

echo "
[". $element->nodeName. "]";

$nodes = $element->childNodes;

foreach ($nodes as $node) {

echo $node->nodeValue. "\n";

}

}

}

?>

错误是:

警告:domDocument::loadHTML():htmlCheckEncoding:未知编码

utf-8;字符集=utf-8英寸实体,行:11英寸

C:\websites\domxpath\index.php,第10行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值