PHP:Encoded +被替换为空格

时间:2016-07-28 14:10:20

标签: php .htaccess

这里有很多类似的问题,但我找不到任何帮助我的问题。 基本上,我有一个像这样的字符串:

Collections/Linkin Park/Dead By Sunrise (2009) %2B Album Cover

该字符串是较长网址的一部分,此特定部分通过.htaccess RewriteRule分配给$ _GET数组。当我回显存储在$ _GET中的字符串时,我得到:

Collections/Linkin Park/Dead By Sunrise (2009) Album Cover

%2B刚刚消失(在网页源中,它显示三个空格)。这是为什么?我该如何预防?

只有+的错误。我知道php将+视为一个空格,但它不应该被编码。

1 个答案:

答案 0 :(得分:2)

您应该在规则中使用B flag,指示RewriteRule在应用转换之前转义非字母数字字符:

RewriteRule ^Entertainment/Music/(.*)/$ ?sub=Entertainment&page=Music&e1=$1 [B,QSA,NC,L]

现在当您转储$_GET数组时,您将获得:

Array
(
    [sub] => Entertainment
    [page] => Music
    [e1] => Collections/Linkin Park/Dead By Sunrise (2009) + Album Cover
)

注意+之前Album Cover的外观。