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

时间:2011-01-21 21:19:38

标签: php string

我在用“urlencoded”字符串“%2B”替换“+”符号时遇到了一些麻烦。我怎么能这样做?

这是我尝试过的:

文本输入文本框:

plus(+)

然后我对该字符串进行了urlencode:

$string = urlencode($string);

字符串现在看起来像:

plus%28+%29

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

plus( ) 

因为urldecode()将“+”解释为空格。

我尝试使用php的str_replace(),但我继续收到“NULL”作为“$ new_string”的值:

$new_string = str_replace('+', '%2B', $string);

有什么想法吗?

提前致谢!

2 个答案:

答案 0 :(得分:42)

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

您也可以尝试rawurlencode。它会将空格编码为%20而不是+

答案 1 :(得分:0)

那对我有帮助:

function _rawurlencode($string) {
    $string = rawurlencode(str_replace('+','%2B',$string));
    return $string;
}