PHP: Leerzeichen in String in% 20 konvertieren?

82

Wie kann ich Leerzeichen in Zeichenfolgen konvertieren %20?

Hier ist mein Versuch:

$str = "What happens here?";
echo urlencode($str);

Die Ausgabe ist "What+happens+here%3F", daher werden die Leerzeichen nicht als dargestellt %20.

Was mache ich falsch?

matt
quelle

Antworten:

194

Verwenden Sie rawurlencodestattdessen die Funktion.

Matthew Flaschen
quelle
Beachten Sie, dass ein konvertierter Schrägstrich dazu führt, dass die URL nicht funktioniert, wenn Sie dies für die URL verwenden (nicht für den Abfrageteil). Wenn Sie sich also nur um Leerzeichen kümmern müssen (möglicherweise für diese URL), empfehle ich str_replace.
Lukáš Řádek
25

Das Pluszeichen ist die historische Codierung für ein Leerzeichen in URL-Parametern, wie in der Hilfe für die urlencode()Funktion dokumentiert .

Dieselbe Seite enthält die Antwort, die Sie benötigen - verwenden Sie rawurlencode()stattdessen, um eine RFC 3986- kompatible Codierung zu erhalten.

Alnitak
quelle
19

Ich glaube, wenn Sie die %20Variante verwenden müssen, könnten Sie vielleicht verwenden rawurlencode().

David sagt, Monica wieder einsetzen
quelle