如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

说起querylist与乱码的问题,苏南大叔在这篇文章里面,做个简单的总结。总结的方案,其实就三种,前两种是querylist内置的,而后面一种是php内置的(部分情况下,可能需要iconv.so组件)。

QueryList 乱码问题,编码转换解决方案总结 - querylist编码转化
QueryList 乱码问题,编码转换解决方案总结(图1-1)

出现乱码的问题很多,解决方法也不尽相同,要视具体情况而定,以下几种乱码解决方案仅供参考。

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经验文章,请点击:

 【源码】代码片段及相关软件点此获取

 【querylist】秘籍文章入口,仅传授于有缘之人   querylist

本站的忠实读者小伙伴,正在阅读下面这些文章:

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
欢迎指正文字或逻辑错误,将会择优在文末列出您的信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!