php URL-decode get '+' aus der URL
So, ich bin versucht zu codieren/decodieren einer url, die, wenn decodiert wird wieder die codierte +
Symbole aus der url. Zum Beispiel, ich encodewebsite.com/index.php?eq=1+12
die, wenn Sie codiert stellt sich die +
in %2B
, wie es sollte. Wenn ich um den Wert von $_REQUEST['eq']
und verwenden urldecode()
es echo ist, als "1 12"
. Ich kann nicht scheinen, um das decodieren, um wieder die +
so zu sprechen. Was mache ich hier falsch, oder gibt es effizientere/bessere Weg zu gehen über das tun dies? Hier ist die genaue encode/decode Linien, die ich benutze.
Submit-Seite
<?php
$eq = "1+12";
$send = '<a href="website.com/index.php?eq='.urlencode($eq).'</a>';
echo $send;
Abruf Seite
<?php
$eq = urldecode($_REQUEST['eq']);
echo $eq;
?>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laufen nicht
urldecode
werden die Daten in$_REQUEST
automatisch entschlüsselt für Sie.Einem plus-Zeichen in einer URL ist eine verschlüsselte Raum. PHP dekodiert das hex-Wert zu einem
+
automatisch. Dann läuft das Ergebnis durchurldecode
Sie manuell (und falsch) ist die Decodierung der+
zu einem.
urldecode
- Anweisung.eq=1%2B12
.Versuchen Sie es mit der Funktion
rawurldecode()
statturldecode()
Ich codieren in JavaScript mit
encodeURIComponent()
- und entschlüsseln in PHP mitrawurldecode()
und es kodiert/dekodiert richtig für mich, darunter das "+", aber NICHT miturldecode()