2016-07-28 98 views
4

這裏有很多類似的問題,但我找不到任何幫助。 基本上,我有一個這樣的字符串:PHP:Encoded +被替換爲空格

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

的字符串是一個較長的URL的一部分,而這個特定部分被分配到$ _GET數組,通過重寫規則的.htaccess。當我回聲存儲在$ _GET字符串,我得到:

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

的%2B剛好消失(在網頁源,它顯示了三個空格)。這是爲什麼?我該如何預防它?

這只是+的錯誤。我知道php把+看作是一個空間,但它不應該在編碼時使用。

+0

@anubhava它實際上顯示了正確的值:sub = Entertainment&page = Music&e1 = Collections/Linkin Park/Dead By Sunrise(2009)+ Album Cover但是我需要一種方法來只提取我需要的部分。 – EpicKnarvik97

+0

@RyanVincent我目前使用的是rawurlencode,但rawurlencode和urlencode並沒有太大的區別。 – EpicKnarvik97

+0

@anubhava RewriteRule^Entertainment/Music /(.*)/$?sub = Entertainment&page = Music&e1 = $ 1 [NC,L] – EpicKnarvik97

回答

2

你應該在你的規則,指示重寫規則來應用轉換之前逃脫非字母數字字符使用B flag:當你傾倒$_GET陣列

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

現在,您將得到:

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

Album Cover之前注意+的外觀。

+1

謝謝。我沒有真正看到不同的標誌。我剛剛發現一些工作。 – EpicKnarvik97