如何将"+"加号替换为"%2B"的相应网址编码?

Ron*_*dog 24 php string

我用"urlencoded"字符串"%2B"替换"+"符号时遇到了一些麻烦.我怎样才能做到这一点?

这就是我尝试过的:

文本输入文本框:

plus(+)
Run Code Online (Sandbox Code Playgroud)

然后我urlencode字符串:

$string = urlencode($string);
Run Code Online (Sandbox Code Playgroud)

字符串现在看起来像:

plus%28+%29
Run Code Online (Sandbox Code Playgroud)

我想要"+"urlencoded,否则当我在urldecode()中显示要在浏览器中显示的数据时,我最终得到:

plus( ) 
Run Code Online (Sandbox Code Playgroud)

因为urldecode()将"+"解释为空格.

我尝试使用php的str_replace(),但我一直得到一个"NULL"作为"$ new_string"的值返回:

$new_string = str_replace('+', '%2B', $string);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

提前致谢!

Joh*_*ica 43

这很奇怪.当我使用时urlencode,plus(+)我得到plus%28%2B%29.确保你正确使用它.

你也可以试试rawurlencode.它将编码空格%20而不是+.

  • ++来自PHP手册页(http://php.net/manual/en/function.urlencode.php)中的注释:"如果文本包含电子邮件地址,请不要使用urlencode()或urldecode(),因为它会破坏"+"字符,这是一个完全有效的电子邮件地址字符.除非您确定不会对电子邮件地址进行编码,并且您需要非标准"+"用法提供的可读性,而是始终使用rawurlencode()或rawurldecode()." (13认同)