使用Curl进行抓取远程内容时url中文编码问题示例探讨


Posted in PHP onOctober 29, 2013

PHP中对于URL进行编码,可以使用 urlencode() 或者 rawurlencode(),二者的区别是前者把空格编码为 '+',而后者把空格编码为 '%20',不过应该注意的是,在编码时应该只对部分URL编码,否则URL中的冒号和反斜杠也会被转义。下面是详细解释:

string urlencode( string str)

返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。
例子 1 :urlencode函数与rawurlencode函数区别
$str='博 客'; 
echo urlencode($str); 
echo "<br>"; 
echo rawurlencode($str);

url结果:
%B2%A9+%BF%CD 
%B2%A9%20%BF%CD

例子 2 :url中文编码方法
从url:"http://www.baidu.com/s?wd=博 客" 转为 url:"http://www.baidu.com/s?wd=%E5%8D%9A%20%E5%AE%A2";
$url='http://www.baidu.com/s?wd=博 客'; 
$arr=explode('=',$url); 
$url=$arr[0].'='.rawurlencode($arr[1]); 
echo $url;

结果:
http://www.baidu.com/s?wd=%E5%8D%9A%20%E5%AE%A2
或许用以下url编码函数
function cn_urlencode($url){ 
$pregstr = "/[\x{4e00}-\x{9fa5}]+/u";//UTF-8中文正则 
if(preg_match_all($pregstr,$url,$matchArray)){//匹配中文,返回数组 
foreach($matchArray[0] as $key=>$val){ 
$url=str_replace($val, urlencode($val), $url);//将转译替换中文 
} 
if(strpos($url,' ')){//若存在空格 
$url=str_replace(' ','%20',$url); 
} 
} 
return $url; 
}

url结果:
http://www.baidu.com/s?wd=%E5%8D%9A%20%E5%AE%A2
PHP 相关文章推荐
PHP中实现图片的锐化
Oct 09 PHP
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
Jun 08 PHP
php MsSql server时遇到的中文编码问题
Jun 11 PHP
php ios推送(代码)
Jul 01 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
Jun 12 PHP
php接口数据加密、解密、验证签名
Mar 12 PHP
php短网址和数字之间相互转换的方法
Mar 13 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
Sep 21 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
php实现图片以base64显示的方法
Oct 13 PHP
php使用自带dom扩展进行元素匹配的原理解析
May 29 PHP
PHP rsa加密解密算法原理解析
Dec 09 PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 #PHP
单点登录 Ucenter示例分析
Oct 29 #PHP
php中过滤非法字符的具体实现
Oct 29 #PHP
PHP时间戳 strtotime()使用方法和技巧
Oct 29 #PHP
PHP页面中文乱码分析
Oct 29 #PHP
php四种基础算法代码实例
Oct 29 #PHP
教你如何使用php session
Oct 28 #PHP
You might like
php不使用插件导出excel的简单方法
2014/03/04 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
2015/12/10 PHP
php实现中文转数字
2016/02/18 PHP
Jquery截取中文字符串的实现代码
2010/12/22 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
微信小程序实现登录注册tab切换效果
2020/12/29 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
从0开始的Python学习016异常
2019/04/08 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
Python面向对象封装操作案例详解
2019/12/31 Python
python实现超级玛丽游戏
2020/03/18 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
亚马逊印度站:Amazon.in
2017/10/15 全球购物
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
英国领先的在线高尔夫商店:Scottsdale Golf
2019/08/26 全球购物
社区敬老月活动实施方案
2014/02/17 职场文书
一年级评语大全
2014/04/23 职场文书
三八妇女节活动总结
2014/05/04 职场文书
邀请函的格式
2015/01/30 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
python中subplot大小的设置步骤
2021/06/28 Python
java设计模式--七大原则详解
2021/07/21 Java/Android