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

1
string urlencode( string str)

返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。

例子 1 :urlencode函数与rawurlencode函数区别

 
1
2
3
4
$str = '博 客' ;
echo  urlencode( $str );
echo  "<br>" ;
echo  rawurlencode( $str );

url结果:

1
2
%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";

1
2
3
4
$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编码函数

1
2
3
4
5
6
7
8
9
10
11
12
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

使用Curl进行抓取远程内容时url中文编码问题的更多相关文章

  1. php使用curl简单抓取远程url的方法

    这篇文章主要介绍了php使用curl简单抓取远程url的方法,涉及php操作curl的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php使用curl抓取远程url的方法.分 ...

  2. PHP cURL库函数抓取页面内容

    目录 1 为什么要用cURL? 2 启用cURL 3 基本结构 4 检查错误 5 获取信息 6 基于浏览器的重定向 7 用POST方法发送数据 8 文件上传 9 cURL批处理(multi cURL) ...

  3. php抓取远程数据显示在下拉列表中

    前言:周五10月20日的时候,经理让做一个插件,使用的thinkphp做这个demo 使用CURL抓取远程数据时如果出现乱码问题可以加入 header("content-type:text/ ...

  4. php curl抓取远程页面内容的代码

    使用php curl抓取远程页面内容的例子. 代码如下: <?php /** * php curl抓取远程网页内容 * edit by www.jbxue.com */ $curlPost = ...

  5. 利用curl抓取远程页面内容

    最基本的操作如下 $curlPost = 'a=1&b=2';//模拟POST数据$cookie_file    =    tempnam('./temp','kie');//可选,保存ses ...

  6. file_get_contents抓取远程URL内容

    /** * POST URL * @param $url * @param null $post * @return false / string */ public static function ...

  7. 百度UEditor编辑器关闭抓取远程图片功能(默认开启)

    这个坑娘的功能,开始时居然不知道如何触发,以为有个按钮,点击一下触发,翻阅了文档,没有发现,然后再网络上看到原来是复制粘贴非白名单内的图片到编辑框时触发,坑娘啊............... 问题又来 ...

  8. 【转载】ASP.NET以Post方式抓取远程网页内容类似爬虫功能

    使用HttpWebRequest等Http相关类,可以在应用程序中或者网站中模拟浏览器发送Post请求,在请求带入相应的Post参数值,而后请求回远程网页信息.实现这一功能也很简单,主要是依靠Http ...

  9. PHP批量抓取远程网页图片并存到本地实现方法和源码

    做为一个仿站工作者,当遇到网站有版权时甚至加密的时候,WEBZIP也熄火,怎么扣取网页上的图片和背景图片呢.有时候,可能会想到用火狐,这款浏览器好像一个强大的BUG,文章有版权,屏蔽右键,火狐丝毫也不 ...

随机推荐

  1. iOS:(接口适配器3)--iPhone适应不同型号 6/6plus 前

    对于不同的苹果设备.检查每个参数<iOS:机型參数.sdk.xcode各版本号>.        机型变化 坐标:表示屏幕物理尺寸大小,坐标变大了.表示机器屏幕尺寸变大了: 像素:表示屏幕 ...

  2. CImage类的介绍与使用

    CImage类的介绍与使用 程序代码下载处:http://download.csdn.net/source/2098910 下载处:http://hi.baidu.com/wangleitongxin ...

  3. Android的BUG(二) - SurfaceTexture中的野指针

    当初遇到这个bug,是不定期的低概率出现,最后找到一个比较容易重现的步骤: 启动系统 然后进google +  新建一个帐号(注意是新建一个帐号)  没几步就重启了 这个BUG,一开始追踪也是无头绪的 ...

  4. C# ignoring letter case for if statement(Stackoverflow)

    Question: I have this if statement: if (input == 'day') Console.Write({0}, dayData); When the user t ...

  5. T-sql表表达式

    内联表值函数 可以理解是个带参数的视图的表达式,好处就是创建后,可永久保存在数据库中,查询复用. 创建的格式: create function 函数名 (参数名 as 参数类型) return tab ...

  6. Ext.net.DirectMethods

    http://www.ext.net.cn/forum.php?mod=viewthread&tid=1282&highlight=directmethod DirectMethod ...

  7. [转]SELinux管理与配置

    原文链接:http://blog.csdn.net/huangbiao86/article/details/6641893 1.1 SElinux概述 SELinux(Security-Enhance ...

  8. Swift中的ViewController

    ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图.iOS的SDK中提供很多原生ViewController ...

  9. centos7安装codeblocks教程

    author:lidabo 装了好多次系统,每次装的时候都有要在网上各种查,太麻烦了.所以决定记录一下,以后用到的时候会方便一些.当然,本文来源于网络,取百家之长,最重要的是本人已验证过,说明对本系统 ...

  10. 高仿114la网址导航源码完整最新版

    给大家本人我精心模仿的高仿114la网址导航源码,我们都知道114la网址导航的影响力,喜欢的朋友可以下载学习一下.  由于文件较大,没有上传了,下载地址在下面有的. 附源码下载: 114la网站导航 ...