与JS的encodeURIComponent相对应的PHP函数

在用AJAX与后台交互时经常要对中文进行编码解码,对于JS来说有两个函数:encodeURIComponent用于编码,decodeURIComponent用于解码。而对于后台的PHP来说有两个相对应的编码解码函数:urlencode用于编码,urldecode用于解码。现在看下列两段代码,先给个PHP代码:

<?php
$myStr1 = '我是中国人';
$myStr2 = urlencode($myStr1);
echo $myStr1 . '<br />';
echo $myStr2 . '<br />';
echo urldecode($myStr2) . '<br />';
?>

上面这段php代码会输出:

我是中国人
%E6%88%91%E6%98%AF%E4%B8%AD%E5%9B%BD%E4%BA%BA
我是中国人

再来看JS代码:

var myStr1 = '我是中国人';
var myStr2 = encodeURIComponent(myStr1);
document.write(myStr1);document.write('<br />');
document.write(myStr2);document.write('<br />');
document.write(decodeURIComponent(myStr2));

上面这段JS代码会输出:

我是中国人
%E6%88%91%E6%98%AF%E4%B8%AD%E5%9B%BD%E4%BA%BA
我是中国人

和上面PHP代码输出的内容是一样的。

此条目发表在 php 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

与JS的encodeURIComponent相对应的PHP函数》有 2 条评论

  1. Tony 说:

    不对吧,

    php的urlencode和js的encodeURIComponent在处理符号上 机制不同的,

    如感叹号、空格等

  2. admin 说:

    @Tony
    试了下果然如此:对于半角空格来说,PHP的urlencode输出“+”,而JS的encodeURIComponent输出“%20”;对于半角“!”来说,PHP的urlencode输出“%21”,而JS的encodeURIComponent仍然输出“!”。谢谢你的指正:)

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>