在线等-phpQuery采集出现乱码

jaojaojai 2015-02-10 10:27:20
关于采集电影天堂出现乱码,求高手帮处理。。。。。。。。

<?php
header("Content-type: text/html; charset=utf-8");
set_time_limit(0);
require_once("../phpQuery/phpQuery.php");

function shootCodeBug($data){
$data=mb_convert_encoding($data,'ISO-8859-1','gb2312');
return mb_convert_encoding($data,'utf-8','GBK');
}

phpQuery::newDocumentHTML(shootCodeBug('http://www.dytt8.net/'));
phpQuery::$defaultCharset="gb2312";
$content = pq("#menu")->html();
phpQuery::$documents=array(); //清空缓存
...全文
498 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
phpQuery::$defaultCharset="gb2312";设置成utf8
xuzuning 2015-02-10
  • 打赏
  • 举报
回复
这是你的使用方法不当造成的 phpQuery 是利用 DOMDocument 做 HTML 解析的 而 DOMDocument::loadHTML 方法在载入 HTML 数据时,会根据文档中的 <meta http-equiv="Content-Type" content="text/html; charset=XXX"> 标记来识别文档的字符集。 如果文档中没有这个标记,则取默认字符集 ISO-8859-1 因此,如果待处理的内容没有字符集声明标记时,应自己附加上去 设 $html 为待分析的内容,则
if(! preg_match('/<meta[^>]+charset=/i', $html)) {
	$charset = mb_check_encoding($html, 'utf-8') ? 'utf-8' : 'gbk';
	$html = sprintf('<meta http-equiv="Content-Type" content="text/html; charset=%s">%s', $charset, $html);
}
再给 phpQuery 处理就没有问题了 当然,你也可以整体的转换成 utf-8 编码的
看小雪 2015-02-10
  • 打赏
  • 举报
回复
楼主,可以试下楼上的,我通常都是自个写规则的,不用phpQuery,我觉得这些框架挺麻烦的

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧