QueryList 乱码问题,编码转换解决方案总结
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
说起querylist
与乱码的问题,苏南大叔在这篇文章里面,做个简单的总结。总结的方案,其实就三种,前两种是querylist
内置的,而后面一种是php
内置的(部分情况下,可能需要iconv.so组件)。
出现乱码的问题很多,解决方法也不尽相同,要视具体情况而定,以下几种乱码解决方案仅供参考。
QueryList
内置的解决方案encoding()
使用编码转换插件,设置输入输出编码
$html =<<<STR
<div>
<p>这是内容</p>
</div>
STR;
$rule = array(
'content' => array('div>p:last','text')
);
$data = QueryList::html($html)->rules($rule)
->encoding('UTF-8','GB2312')->query()->getData();
QueryList
内置的解决方案removeHead()
值得说明的是:removeHead()
和encoding()
并不冲突。如果encoding()
设置输入输出参数仍然无法解决乱码,那就使用 removeHead()
方法移除html头部。
$html =<<<STR
<div>
<p>这是内容</p>
</div>
STR;
$rule = array(
'content' => array('div>p:last','text')
);
$data = QueryList::html($html)->rules($rule)
->removeHead()->query()->getData();
// 或者
$data = QueryList::html($html)->rules($rule)
->encoding('UTF-8','GB2312')->removeHead()->query()->getData();
利用iconv()
手动转码
把iconv
转码后的页面,传给QueryList进行进一步处理。
$url = 'http://top.etao.com/level3.php?spm=0.0.0.0.Ql86zl&cat=16&show=focus&up=true&ad_id=&am_id=&cm_id=&pm_id=';
//手动转码
$html = iconv('GBK','UTF-8',file_get_contents($url));
$data = QueryList::html($html)->rules(array("text"=>array(".title a","text")))->query()->getData();
print_r($data);
相关链接
总结
面对乱码问题,苏南大叔表示:转换编码吧,少年。没有别的捷径可以走的。更多querylist
经验文章,请点击:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。