Wie kann ich das Pluszeichen „+“ durch die entsprechende URL-Codierung „%2B“ ersetzen?

Lesezeit: 1 Minute

Ich habe Probleme damit, das „+“-Zeichen durch die URL-codierte Zeichenfolge „%2B“ zu ersetzen. Wie kann ich das machen?

Das habe ich versucht:

In das Textfeld eingegebener Text:

plus(+)

Ich urlencode dann die Zeichenfolge:

$string = urlencode($string);

String sieht jetzt so aus:

plus%28+%29

Ich möchte das “+” urlencodiert haben, oder wenn ich urldecode() die Daten, die im Browser angezeigt werden sollen, am Ende habe:

plus( ) 

weil urldecode() das “+” als Leerzeichen interpretiert.

Ich habe versucht, str_replace() von PHP zu verwenden, aber ich bekomme immer wieder ein “NULL” als Wert für “$new_string”:

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

Irgendwelche Ideen?

Danke im Voraus!

  • Verwenden urlencode($string) Echos plus%28%2B%29 Für mich.

    – Michael Irigoyen

    21. Januar 2011 um 21:24 Uhr

Benutzer-Avatar
John Kugelmann

Das ist komisch. Wenn ich benutze urlencode an plus(+) Ich bekomme plus%28%2B%29. Stellen Sie sicher, dass Sie es richtig verwenden.

Du könntest es auch versuchen rawurlencode. Es kodiert Leerzeichen als %20 Anstatt von +.

  • ++ Aus den Kommentaren in der PHP-Manpage (php.net/manual/en/function.urlencode.php) : “Verwenden Sie urlencode() oder urldecode() nicht, wenn der Text eine E-Mail-Adresse enthält, da es das “+”-Zeichen zerstört, ein vollkommen gültiges Zeichen für E-Mail-Adressen. Es sei denn, Sie sind sich sicher, dass Sie nicht codieren werden E-Mail-Adressen UND Sie benötigen die Lesbarkeit, die durch die nicht standardmäßige Verwendung von „+“ bereitgestellt wird, verwenden Sie stattdessen immer use rawurlencode() oder rawurldecode().

    – John

    21. Januar 2011 um 21:33 Uhr

  • Ich hatte das gleiche Problem und es war wirklich schwer zu debuggen, das Problem ist, dass htaccess automatisch die Parameter entschlüsselt, die Sie verwenden müssen [B] wie hier erklärt: stackoverflow.com/a/48543854/407650

    – XCS

    21. April um 13:39 Uhr

Das hat mir geholfen:

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

1145680cookie-checkWie kann ich das Pluszeichen „+“ durch die entsprechende URL-Codierung „%2B“ ersetzen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy