php处理带有中文URL的方法

本文实例讲述了php处理带有中文URL的方法。分享给大家供大家参考,具体如下:

ie6超链接有中文的时候会有问题,万恶的ie6啊.PHP使内置的urlencode函数也不行,urlencode把斜杠等ascii码字符也给编码了,还是不能解决问题,使用下面的函数可以解决这个问题.

原理很简单,就是把所有byte大于127的byte转换为16进制.

中文超链接地址

// utf-8编码
$url = 'http://ftp.dotcoo.com/PHP视频教程.rar';
//urlencode结果:
echo urlencode($url);
http%3A%2F%2Fftp1.zdy.co%2Fmovie%2F%E6%88%91%E4%B8%BA%E7%9B%B8%E4%BA%B2%E7%8B%82.rmvb
//link_urldecode结果:
echo link_urldecode($url);
http://ftp1.zdy.co/movie/%E6%88%91%E4%B8%BA%E7%9B%B8%E4%BA%B2%E7%8B%82.rmvb
//link_urldecode函数:
function link_urldecode($url) {
  $uri = '';
  $cs = unpack('C*', $url);
  $len = count($cs);
  for ($i=1; $i<=$len; $i++) {
    $uri .= $cs[$i] > 127 ? '%'.strtoupper(dechex($cs[$i])) : $url{$i-1};
  }
  return $uri;
}

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP编码与转码操作技巧汇总》、《PHP错误与异常处理方法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

(0)

相关推荐

  • PHP解决URL中文GBK乱码问题的两种方法

    一般情况下对URL进行UrlEncode 处理 , urlencode(),urldecode(): 也可以通过iconv('utf-8', 'gb2312', $ret)对接收到的数据进行编码转换.

  • php url地址栏传中文乱码解决方法集合

    php地址栏传中文$_GET下来后乱码,urlencode和urldecode用法详解url编码语法: string urlencode(string str);返回值: 字符串函数种类: 编码处理例如: 复制代码 代码如下: <?php$ChineseName="我的名字,是中文的哦";$EncodeStr=urlencode($ChineseName);echo "<a href=/cgi/personal.cgi?name=$EncodeStr>我的名

  • PHP中文URL编解码(urlencode()rawurlencode()

    下面是详细解释:///\\\ string urlencode ( string str) 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+).此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样.由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码(参见 rawurlencode())不同.此函数

  • PHP fopen 读取带中文URL地址的一点见解

    但昨天在读取一张图片的时候出问题了,后来发现是URL里带中文字符. 例如下面这种情况: 复制代码 代码如下: $files = fopen('http://www.website.com/我的PP.jpg', 'rb'); 那"$files"的返回值将会是"False".首先我想到的是将URL用urlencode编码一下,发现还是不行,原来urlencode会把":"."/"字符也编码了,那URL就不是URL了.呵,说得有些绕

  • php下目前为目最全的CURL中文说明

    PHP中的CURL函数库(Client URL Library Function) curl_close - 关闭一个curl会话 curl_copy_handle - 拷贝一个curl连接资源的所有内容和参数 curl_errno - 返回一个包含当前会话错误信息的数字编号 curl_error - 返回一个包含当前会话错误信息的字符串 curl_exec - 执行一个curl会话 curl_getinfo - 获取一个curl连接资源句柄的信息 curl_init - 初始化一个curl会话

  • php中解析带中文字符的url函数分享

    很多时候,在书写网页应用程序时候,会遇到中文和其他字符冲突的问题,例如有的url链接中包含中文字符,那么在使用wget/curl/file_get_contents等等获取信息时候会直接撞上一个大大的"404",会很无语. 这里写了一个小函数来解决这个问题,只是限于在path中进行解析而已,涉及到的相关函数使用大家可以查看手册就行. 复制代码 代码如下: function urlConvert($url){           $pathArr = array();          

  • php中url传递中文字符,特殊危险字符的解决方法

    我们需要在url中传递中文字符或是其它的html等特殊字符,似乎总会有各种乱,不同的浏览器对他们的编码又不一样, 对于中文,一般的做法是: 把这些文本字符串传给url之前,先进行urlencode($text)一下: 但是对于一些很"危险"的字符,比如说html字符,甚至是SQL注入相关的字符,如果很明显的传给系统,出于安全考虑,系统一般都会把它们过滤掉的. 现在,我们需要这些危险字符,该这么办? 我想到的办法是 先给它们 base64_encode($text) 编码,到服务端时,又

  • php处理带有中文URL的方法

    本文实例讲述了php处理带有中文URL的方法.分享给大家供大家参考,具体如下: ie6超链接有中文的时候会有问题,万恶的ie6啊.PHP使内置的urlencode函数也不行,urlencode把斜杠等ascii码字符也给编码了,还是不能解决问题,使用下面的函数可以解决这个问题. 原理很简单,就是把所有byte大于127的byte转换为16进制. 中文超链接地址 // utf-8编码 $url = 'http://ftp.dotcoo.com/PHP视频教程.rar'; //urlencode结果

  • ASP.NET网站伪静态下使用中文URL的方法

    首先解释一下,什么是中文URL呢?它并不是我们常见的把汉字编码为 %CF%EC 这种形式,而是在URL中直接使用汉字 这种形式目前还不是很多见.因为不同的浏览器处理起来可能会有所不同,不过据我测试,IE8和Firefox是完全支持的. 它的好处是可以使用链接地址看起来非常直观易懂!搜索引擎也支持. 先讲一下我的ASP.NET网站的伪静态,我的文件都是以.htm结尾的,实际上是动态的ASP.方法是:在后台将htm映射为aspx文件. 伪静态的规则,是在web.config文件中定义的. 形式一:

  • python通过urllib2获取带有中文参数url内容的方法

    本文实例讲述了python通过urllib2获取带有中文参数url内容的方法.分享给大家供大家参考.具体如下: 对于中文的参数如果不进行编码的话,python的urllib2直接处理会报错,我们可以先将中文转换成utf-8编码,然后使用urllib2.quote方法对参数进行url编码后传递. content = u'你好 jb51.net' content = content.encode('utf-8') content = urllib2.quote(content) api_url =

  • 关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法

    最近项目用到了backbone 做前后端的分离方案,遇见了中文乱码问题,解决方案总结如下: 假设需要存一条课程记录到后台 model定义如下: var AddCourse= Backbone.Model.extend({ url:path+"/course/add", parse : function(response){ return response.data; } }); encodeURIComponent 函数 将中文的内容进行编码 $('#addCourseBtn' ).c

  • Nginx下无法使用中文URL的解决方法

    前言 最近更换了博客空间后,发现许多文章页出现404的情况,找了一下原因,发现是由于URL含有中文而Nginx默认不支持中文URL导致的.此文记录了解决方法. 在Apache中,要实现对中文的支持需要单独加载中文模块,而Nginx是支持多种编码不需要安装其他组件的,只是默认是走UTF-8的支持路线.这里提供两种方法实现Nginx对中文URL的支持. 方法一 利用convmv对文件名转码 此方法治标不治本,仅供紧急时候使用(访问量大时间段,无法对服务器进行重启操作的时候). 这里以CentOS为例

  • PHP基于curl post实现发送url及相关中文乱码问题解决方法

    本文实例讲述了PHP基于curl post实现发送url及相关中文乱码问题解决方法.分享给大家供大家参考,具体如下: 这个问题困扰我几天了,发送的指定网址的url参数,中文总是乱码,指定网址是utf8编码的,我发送的也是utf8编码的.但是还是乱码,开始用的file_get_contents,后来换成curl并在php.ini中开启了php_curl,还是不行,又加了header终于解决.代码如下: $url = 'http://'; //调用接口的平台服务地址 $post_string = a

  • python3下使用cv2.imwrite存储带有中文路径图片的方法

    由于imwrite前使用编码在python3中已经不适用,可用imencode代替,以下代码是从视频中获取第2帧保存在中文文件夹下的实例: cap = cv2.VideoCapture("***.mp4") cap.set(cv2.CAP_PROP_POS_FRAMES, 2) ret, frame=cap.read() cv2.imwrite("我//h.jpg", frame) #该方法不成功 cv2.imencode('.jpg', frame)[1].tof

  • Python使用中文正则表达式匹配指定中文字符串的方法示例

    本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法.分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程序和代码的处理,使过程简洁和事半功倍,这往往是高手和菜鸟最显著的差别.

  • iis伪静态中文url出现乱码的解决办法

    首先要看下你安装的是IIS rewrite_2.0还是ISAPI_Rewrite 3.x的伪静态插件. 如果你安装的是IIS rewrite_2.0的话,传递的参数都是UTF-8格式的,如果你网站是GBK的就会出现中文连接乱码. 解决办法: rewrite_2.0规则写法: RewriteRule ^news_list_([0-9a-zA-Z\u4e00-\u9fa5]+)\.html$ news_list.asp?BigClassName=$1 [L] 比如页面传递参数是 zhongwen:

  • 详解Linux环境下使Nginx服务器支持中文url的配置流程

    1:确定你的系统是UTF编码 [root@Tserver ~]# env|grep LANG LANG=en_US.UTF-8 2:NGINX配置文件里默认编码设置为utf-8 server { listen 80; server_name .inginx.com ; index index.html index.htm index.php; root /usr/local/nginx/html/inginx.com; charset utf-8; } 如果是用securecrt 上传文件,请选

随机推荐