2016-07-28 11 views
4

Es gibt viele ähnliche Fragen hier, aber ich habe keine gefunden, um mir zu helfen. Grundsätzlich habe ich eine Zeichenfolge wie folgt:PHP: Encoded + wird durch Leerzeichen ersetzt

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

Der String Teil einer längeren URL ist, und diese bestimmten Teil an die $ _GET Array zugewiesen wird, durch eine .htaccess RewriteRule. Wenn ich die Zeichenfolge gespeichert in $ _GET Echo, erhalte ich:

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

Das% 2B verschwindet nur (in der Webseite Quelle, es zeigt drei Leerzeichen). Warum das? Und wie kann ich das verhindern?

Es ist nur ein Fehler mit +. Ich weiß, PHP behandelt + als ein Leerzeichen, aber es sollte nicht, wenn es codiert ist.

+0

@anubhava Es zeigt tatsächlich den Wert korrekt: sub = Unterhaltung & Seite = Musik & e1 = Sammlungen/Linkin Park/Dead By Sunrise (2009) + Album Cover, aber ich brauche einen Weg, nur den Teil zu extrahieren, den ich brauche. – EpicKnarvik97

+0

@RyanVincent Ich verwende derzeit Rawurlencode, aber Rawurlencode und Urlencode machen keinen großen Unterschied. – EpicKnarvik97

+0

@anubhava RewriteRule^Unterhaltung/Musik /(.*)/$? Sub = Unterhaltung & page = Musik & e1 = $ 1 [NC, L] – EpicKnarvik97

Antwort

2

Sie B flag in Ihrer Regel verwenden sollten, die RewriteRule nicht-alphanumerischen Zeichen zu entkommen anweist, bevor die Transformation Anwendung:

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

Wenn Sie jetzt $_GET Array-Dump erhalten Sie:

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

Hinweis Aussehen von + vor Album Cover.

+1

Danke. Ich habe mir die verschiedenen Flaggen nicht wirklich angesehen. Ich habe gerade ein paar gefunden, die funktionierten. – EpicKnarvik97

Verwandte Themen