作者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