加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Scraping上的字体或Unicode问题[复制]

发布时间:2020-12-13 15:55:30 所属栏目:PHP教程 来源:网络整理
导读:参见英文答案 PHP DomDocument failing to handle utf-8 characters (☆)????????????????????????????????????3个 我试图从网站上抓取信息. 该网站有这样的 127 East Zhongshan No 2 Rd; 中山东二路127号 但是,当我试图废弃它回声它然后会显示出来 127 East
参见英文答案 > PHP DomDocument failing to handle utf-8 characters (☆)????????????????????????????????????3个
我试图从网站上抓取信息.

该网站有这样的

127 East Zhongshan No 2 Rd; 中山东二路127号

但是,当我试图废弃它&回声它然后会显示出来

127 East Zhongshan No 2 Rd; ??-?±±???oè·ˉ127?·

我也尝试UTF-8

有我的PHP代码

现在请帮我解决这个问题.

function GrabPage($site){
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
    curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch,CURLOPT_TIMEOUT,40);
    curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");
    curl_setopt($ch,CURLOPT_URL,$site);
    ob_start();
    return curl_exec ($ch);
    ob_end_clean();
    curl_close ($ch);
}
$GrabData   = GrabPage($site);

$dom    = new DOMDocument();
@$dom->loadHTML($GrabData);

$xpath  = new DOMXpath($dom);


$mainElements = array();
$mainElements = $xpath->query("//div[@class='col--one-whole mv--col--one-half wv--col--one-whole'][1]/dl/dt");

foreach ($mainElements as $Names2) {
    $Name2  = $Names2->nodeValue;
    echo "$Name2";
}

解决方法

首先,您需要在PHP文件之前的其他任何内容之前设置charset:

header('Content-Type: text/html; charset=utf-8');

你需要转换你用mb_convert_encoding获得的html标记:

@$dom->loadHTML(mb_convert_encoding($GrabData,'HTML-ENTITIES','UTF-8'));

Sample Output

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读