Ich erstelle eine Suchseite, auf der Sie eine Suchabfrage eingeben und das Formular an gesendet wird search.php?query=your query
. Welche PHP-Funktion ist die beste und sollte ich zum Codieren / Decodieren der Suchabfrage verwenden?
96
foo bar
ein Textfeld einfügen,foo+bar
in der URL erstellen).file_get_contents
Antworten:
Verwenden Sie für die URI-Abfrage
urlencode
/urldecode
; für alles andere benutzerawurlencode
/rawurldecode
.Der Unterschied zwischen
urlencode
undrawurlencode
ist dasurlencode
codiert gemäß application / x-www-form-urlencoded (Leerzeichen wird mit codiert+
) währendrawurlencode
codiert gemäß der einfachen Prozentcodierung (Leerzeichen wird mit codiert%20
).quelle
+
anstelle von codiert wird%20
. Und außerdem, application / x-www-form-urlencoded zu codieren Formulardaten verwendet wird , während das Percent-Encoding eine allgemeinere Verwendung hat.urldecode
. Was ist dann mit dem URI-Pfad (z. B./a/path with spaces/
) und dem URI-Fragment (z#fragment
. B. )? Sollte ich immerrawurldecode
für diese beiden verwenden?rawurlencode
; aber für POST- und GET-Felder gehen Sie miturlencode
(Like /?Der listige Name urlencode () und urldecode () .
Sie sollten jedoch keine
urldecode()
Variablen verwenden müssen, die in$_POST
und angezeigt werden$_GET
.quelle
"name=b&age=c&location=d"
) codieren, die über AJAX an eine PHP-Datei gesendet wurden?Hier ist mein Anwendungsfall, der eine außergewöhnliche Menge an Codierung erfordert. Vielleicht denkst du, es ist erfunden, aber wir führen dies in der Produktion aus. Zufälligerweise deckt dies jede Art von Codierung ab, daher poste ich als Tutorial.
Anwendungsfallbeschreibung
Jemand hat gerade eine Prepaid-Geschenkkarte ("Token") auf unserer Website gekauft. Tokens haben entsprechende URLs, um sie einzulösen. Dieser Kunde möchte die URL per E-Mail an eine andere Person senden. Unsere Webseite enthält einen
mailto
Link, über den sie dies tun können.PHP-Code
Hinweis: Bei den obigen Angaben wird davon ausgegangen, dass Sie in ein
text/html
Dokument ausgeben . Wenn Ihr Ausgabemedientyp verwendet wird, verwenden Sietext/json
einfach,$retval['url'] = $mailToUri;
da die Ausgabecodierung von verwaltet wirdjson_encode()
.Testfall
Das solltest du sehen:
Und natürlich ist dies die JSON-Darstellung von
$token
oben.quelle
mailto:
es sich nicht um HTTP handelt) können Sie verwenden$mailToUri 'mailto:?' . http_build_query(['subject'=>$subject, 'body'=>$body], null, '&', PHP_QUERY_RFC3986);
.Sie können URL-Codierungsfunktionen verwenden, über die PHP verfügt
Funktion
ASP hat die
Funktion
In JavaScript können Sie die verwenden
Funktion.
quelle