gpt4 book ai didi

php - DOMDocument::loadHTML(): 由于输入错误导致输入转换失败

转载 作者:可可西里 更新时间:2023-10-31 22:11:36 25 4
gpt4 key购买 nike

我想使用 PHPCURL 来删除一个中文网站。早些时候我遇到了压缩结果的问题,SO 帮助我解决了这个问题。现在我在通过 PHP - DOMDocument 解析内容时遇到了麻烦。错误如下,

Warning: DOMDocument::loadHTML(): input conversion failed due to input error, bytes 0xE3 0x80 0x90 0xE8 in /var/www/html/ ..

即使发出警告也无法获得进一步的结果。

我的代码如下:

$agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('text/html; charset=gb2312'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($curl, CURLOPT_ENCODING, ""); // handling all compressions
curl_setopt($curl, CURLOPT_USERAGENT, $agent);
curl_setopt($curl, CURLOPT_TIMEOUT, 1000);
$html = curl_exec($curl) or die("error: ".curl_error($curl));
curl_close($curl);
$htmlParsed = mb_convert_encoding($result,'utf-8','gb2312');

$doc = new DOMDocument();
$doc->loadHTML($htmlParsed);

$xpath = new DOMXpath($doc);

$elements = $xpath->query('//div[@class="test"]//a/@href');

if (!is_null($elements)) {
foreach ($elements as $element) {
echo "<br/>[". $element->nodeName. "]";

$nodes = $element->childNodes;
foreach ($nodes as $node) {
echo $node->nodeValue. "\n";
}
}
}

我发现目标网站的内容类型为 ,

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

所以我尝试将结果转换为 utf-8。

由于在代码的“DOMDocument::loadHTML()”行输入转换失败,我无法解析网页以获取结果。我目前被困在这一点上,任何帮助或建议将不胜感激。提前致谢。

(之前我曾经使用简单的 HTML DOM 解析器,这非常简单。但后来在阅读了 SO 中关于它的用法的缺点之后。我计划切换到 PHP 的原生 DOM 解析器)

最佳答案

我今天看到了一个解决方案。

$html=new DOMDocument();  
$html_source = get_html();
$html_source =mb_convert_encoding( $html_source, "HTML-ENTITIES", "UTF-8");
$html->loadHTML( $html_source );

关于php - DOMDocument::loadHTML(): 由于输入错误导致输入转换失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23360437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com