Je crée une page de recherche, où vous tapez une requête de recherche et le formulaire est soumis search.php?query=your query
. Quelle fonction PHP est la meilleure et que je devrais utiliser pour encoder / décoder la requête de recherche?
97
foo bar
dans un champ de texte, créefoo+bar
dans l'URL).file_get_contents
Réponses:
Pour la requête URI, utilisez
urlencode
/urldecode
; pour toute autre utilisation, utilisezrawurlencode
/rawurldecode
.La différence entre
urlencode
etrawurlencode
est queurlencode
encode selon application / x-www-form-urlencoded (l'espace est encodé avec+
) tandis querawurlencode
encode selon le pur pourcentage d'encodage (l'espace est encodé avec%20
).la source
+
au lieu de%20
. Et en plus de cela, application / x-www-form-urlencoded est utilisé pour encoder les données de formulaire tandis que le Percent-Encoding a un usage plus général.urldecode
. Ensuite, qu'en est-il du chemin URI (par exemple/a/path with spaces/
) et du fragment d'URI (par exemple#fragment
). Dois-je toujours utiliserrawurldecode
pour ces deux?rawurlencode
; mais pour les champs POST et GET, allez avecurlencode
(Like /? folder = my + folder) `Les astucieusement nommés urlencode () et urldecode () .
Cependant, vous ne devriez pas avoir besoin d'utiliser des
urldecode()
variables qui apparaissent dans$_POST
et$_GET
.la source
"name=b&age=c&location=d"
) envoyés à un fichier PHP via AJAX?Voici mon cas d'utilisation, qui nécessite une quantité exceptionnelle d'encodage. Peut-être que vous pensez que c'est artificiel, mais nous le faisons en production. Par coïncidence, cela couvre tous les types d'encodage, je publie donc sous forme de tutoriel.
Description du cas d'utilisation
Quelqu'un vient d'acheter une carte-cadeau prépayée («jeton») sur notre site Web. Les jetons ont des URL correspondantes pour les utiliser. Ce client souhaite envoyer l'URL par e-mail à quelqu'un d'autre. Notre page Web comprend un
mailto
lien qui leur permet de le faire.Code PHP
Remarque: ce qui précède suppose que vous imprimez dans un
text/html
document. Si votre type de support de sortie esttext/json
alors simplement utilisé$retval['url'] = $mailToUri;
car le codage de sortie est géré parjson_encode()
.Cas de test
Tu devrais voir:
Et bien sûr, c'est la représentation JSON
$token
ci - dessus.la source
mailto:
n'est pas HTTP), vous pouvez utiliser$mailToUri 'mailto:?' . http_build_query(['subject'=>$subject, 'body'=>$body], null, '&', PHP_QUERY_RFC3986);
.Vous pouvez utiliser les fonctions d'encodage d'URL PHP a le
fonction
ASP a le
fonction
En JavaScript, vous pouvez utiliser le
fonction.
la source
En fonction du type d'encodage standard RFC que vous souhaitez effectuer ou si vous devez personnaliser votre encodage, vous pouvez créer votre propre classe.
Utilisez l'exemple:
Sortira:
* En savoir plus sur les normes RFC: https://datatracker.ietf.org/doc/rfc3986/ et urlencode vs rawurlencode?
la source