作者arianda (火鍋)
看板PHP
標題Re: [請益] 抓取"yahoo搜尋"原始碼,中文會無法顯示?
時間Thu Jul 17 17:23:52 2008
※ 引述《iamwni (魚只能甩尾...)》之銘言:
: 此程式檔有用utf-8格式儲存,程式如下:
: <?php
: header('Content-Type: text/html; charset=utf-8');
: $search_url = "http://tw.search.yahoo.com";
: $page = implode('', file($search_url));
: echo $page;
: ?>
: 有抓到原始碼,但中文卻無法顯示
: 但換抓取google的原始碼時,中文就可以正常顯示
: 試了好多種抓取的程式,結果都是一樣,不知是那裡出錯了
: 麻煩請高手幫幫忙吧!謝謝...
像是這種問題通常是header送出給對方時候沒有設定, 我是建議使用curl函數來抓取遠端
網頁
header('Content-Type: text/html; charset=utf-8');
$search_url = "
http://tw.search.yahoo.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$search_url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT
5.1; zh-TW; rv:1.9) Gecko/2008052906 Firefox/3.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch ,CURLOPT_HTTPHEADER, array("Accept-Language:
zh-tw","Accept-Charset: utf-8"));
$content = curl_exec ($ch);
curl_close ($ch);
echo $content;
重點是CURLOPT_HTTPHEADER的設定要特別告知yahoo說..."對不起我只接受中文utf8喔"
USERAGENT可設定可不設定, 如果碰上一些還是看不到的網站, 可以加上USERAGENT試試看
--
海綿寶寶, 不要講話!派大星!
我覺得有人在盯著我們看... 你會害我們被發現!
★ ▉
JUNU
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.32.15
1F:推 iamwni :中文可以正常顯示了耶!非常感謝a大,謝謝! 07/17 21:12