ewrewre 发表于 2014-4-8 09:39:54

PHP中GET方法URL传值特殊字符的解决方法

博客好久没动,每次看到博客标签那未启用三个字就刺眼,就决定把它整掉。

本来觉得很简单的,用GET传一下值就OK了,可是总是会出问题。



有的类别的文章就会查到,有的就查不到,最后发现,像Web前端、随笔这样的标签就能查到,而PHP&MySQL和VC++这样的标签就不显示结果,我把GET到的内容echo了一下,发现VC++变成VC 了(VC后有空格),PHP&MySQL只剩下PHP了,看样子是PHP在传值时把这些特殊字符都屏蔽了。



开始百度,得到一种方法,传值之前先urlencode一下,接收的时候再urldecode一下,这样的话只有PHP&MySQL凑效了,VC++输出还是VC。。。


使用如下这样一个函数,将+、&、#等字符替换,如下:


function handleSpecailTag($str) {

      $attachment_path = preg_replace("/+/",'%2B',$str);

      $attachment_path = preg_replace("/#/",'%23',$attachment_path);

      $attachment_path = preg_replace("/&/",'%26',$attachment_path);

      return $attachment_path;

}



同样,传值之前需要urlencode,然后接收的时候将处理后的结果在urldecode一下,就能正常传值了,在博客里实验一下吧。

页: [1]
查看完整版本: PHP中GET方法URL传值特殊字符的解决方法