使用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模拟HTTP认证
Oct 09 PHP
php学习之变量的使用
May 29 PHP
php+js实现图片的上传、裁剪、预览、提交示例
Aug 27 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
Jul 25 PHP
php eval函数一句话木马代码
May 21 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 PHP
php实现在线通讯录功能(附源码)
May 13 PHP
PHP中FTP相关函数小结
Jul 15 PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 PHP
php获取文件名称和扩展名的方法
Feb 07 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 PHP
php7下的filesize函数
Sep 30 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搜索加分页
2016/10/12 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
Dom 结点创建 基础知识
2011/10/01 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
纯js实现图片匀速淡入淡出效果
2017/08/22 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
详解如何运行vue项目
2019/04/15 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
jquery实现的放大镜效果示例
2020/02/24 jQuery
深入了解JS之作用域和闭包
2020/06/16 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
一分钟学会JavaScript中的try-catch
2020/12/14 Javascript
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Python zip()函数用法实例分析
2018/03/17 Python
python os.path模块常用方法实例详解
2018/09/16 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
详解Python学习之安装pandas
2019/04/16 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
经典的班主任推荐信
2013/10/28 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
副护士长竞聘演讲稿
2014/04/30 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
《失物招领》教学反思
2016/02/20 职场文书
入党申请书怎么写?
2019/06/21 职场文书