全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 2215|回复: 24

一段百思不得其解的CURL代码(php代码)

[复制链接]
发表于 2019-2-22 13:21:43 | 显示全部楼层 |阅读模式
本帖最后由 gftflb 于 2019-2-22 13:49 编辑
  1. <?php
  2. $c = curl_init();
  3. curl_setopt($c, CURLOPT_URL,'http://www.xiasl.net/');
  4. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  5. curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
  6. curl_setopt($c, CURLOPT_HEADER, 1);
  7. $content = curl_exec($c);
  8. curl_close($c);
  9. $content=@str_replace('〗','',$content);  //请注意这行,这个字符为什么那么怪异,会对文本内容造成影响?
  10. echo $content;
  11. ?>
复制代码


大佬请运行下,看看为什么文本中“小-姐”这个词会莫名其妙的被修改?
只要替换“〗”这个字符,就会把内容中所有“小-姐”这个词,变成“秀”。百思不得其解。
大佬可以换其他含有“小-姐”这个词的网页url获取试试



替换“〗”的结果



不替换“〗”的结果
发表于 2019-2-22 15:32:35 | 显示全部楼层


就是
小,姐:d0a1 bde3
〗:a1bd
秀:d0e3

这是gbk编码不能正确判断每个汉字的开始结束的问题。
建议把网页先转成utf8,然后你php源代码也用utf8来写,就不会有此类问题了。

点评

这XJJ这么秀  发表于 2019-2-22 17:02
大佬。  发表于 2019-2-22 16:56
MYI
正解+1  发表于 2019-2-22 16:56
牛!!!!  发表于 2019-2-22 16:43
正解  发表于 2019-2-22 15:46
 楼主| 发表于 2019-2-22 16:55:04 | 显示全部楼层
hdown 发表于 2019-2-22 15:32
就是
小,姐:d0a1 bde3
〗:a1bd

按照你解读的原理,终于解决了。

如果需要最终内容为gb2312编码的话,先把获取到的内容全部转成UTF-8编码,再进行过滤替换,最终再次进行编码转换为gb2312,就没这个灵异般的事情了。

大佬牛!

  1. <?php
  2. $c = curl_init();
  3. curl_setopt($c, CURLOPT_URL,'http://www.xiasl.net/');
  4. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  5. curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
  6. curl_setopt($c, CURLOPT_HEADER, 1);
  7. $content = curl_exec($c);
  8. curl_close($c);
  9. $content=mb_convert_encoding($content, 'UTF-8', 'GB2312');//先转UTF-8
  10. $content=@str_replace('〗','',$content); //进行替换
  11. $content=mb_convert_encoding($content, 'GB2312', 'UTF8');//再转回GB2312
  12. echo $content;
  13. ?>
复制代码
发表于 2019-2-22 13:27:16 | 显示全部楼层
太深奥 看不懂 替换
求道鱼 该用户已被删除
发表于 2019-2-22 13:40:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2019-2-22 13:43:42 | 显示全部楼层
单 替换,并没有小,姐,姐啊
 楼主| 发表于 2019-2-22 13:45:01 | 显示全部楼层
求道鱼 发表于 2019-2-22 13:40
在变量content 中搜索‘〗’ 并替换为空

只要替换“〗”这个字符,就会把内容中所有“小-姐”这个词,变成“秀”。
不替换“〗”这个字符,内容中“小-姐”这个词,就没有异样。
“〗”和“小-姐”有什么关系???????
百思不得其解。
 楼主| 发表于 2019-2-22 13:46:09 | 显示全部楼层
duxingfengyu 发表于 2019-2-22 13:43
单 替换,并没有小,姐,姐啊

只要替换“〗”这个字符,就会把内容中所有“小-姐”这个词,变成“秀”。
不替换“〗”这个字符,内容中“小-姐”这个词,就没有异样。
“〗”和“小-姐”有什么关系???????
百思不得其解。
发表于 2019-2-22 13:48:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2019-2-22 13:50:14 | 显示全部楼层
查无此人 发表于 2019-2-22 13:48
他是GBk,你是默认utf8。你先转一下字符集试试看

没用,试过了
发表于 2019-2-22 13:51:22 | 显示全部楼层
https://baike.baidu.com/item/%E5%B0%8F%E5%A7%90/242562?fr=aladdin
一切正常
发表于 2019-2-22 13:55:40 | 显示全部楼层
为啥我执行就不替换啊,Windows 下用phpstudy试的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-3-29 15:40 , Processed in 0.066297 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表