使用Curl进行抓取远程内容时url中文编码问题示例探讨
2015-01-24信息快讯网
在编码时应该只对部分URL编码,否则URL中的冒号和反斜杠也会被转义,下面有两个不错的示例,有类似情况的朋友可以感受下
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
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
php 判断网页是否是utf8编码的方法
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
PHP解决URL中文GBK乱码问题的两种方法
php数组中包含中文的排序方法
PHP Curl出现403错误的解决办法
微信支付开发教程(一)微信支付URL配置
PHP学习笔记之字符串编码的转换和判断
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
php检测文件编码的方法示例
php获取中文拼音首字母类和函数分享
phpmailer中文乱码问题的解决方法
自己写了一个php检测文件编码的函数
php使用json_encode对变量json编码
php另类上传图片的方法(PHP用Socket上传图片)
is_uploaded_file函数引发的不能上传文件问题
PHP页面中文乱码分析
php字符编码转换之gb2312转为utf8
使用PHP curl模拟浏览器抓取网站信息
PHP连接MySQL查询结果中文显示乱码解决方法
获取URL文件名后缀
PHP CURL CURLOPT参数说明(curl_setopt)
php 判断是否是中文/英文/数字示例代码
PHP的PSR规范中文版
php中通过curl检测页面是否被百度收录
PHP 输出URL的快捷方式示例代码
PHP截断标题且兼容utf8和gb2312编码
PHP json_encode中文乱码问题的解决办法
提高PHP性能的编码技巧以及性能优化详细解析
JoshChen_web格式编码UTF8-无BOM的小细节分析
解析php开发中的中文编码问题