Je fais 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?
Pour la requête URI, utilisez urlencode
/ urldecode
; pour toute autre utilisation, utilisez rawurlencode
/ rawurldecode
.
La différence entre urlencode
et rawurlencode
est que
urlencode
code selon application/x-www-form-urlencoded (l'espace est codé avec +
) tandis querawurlencode
code conformément à la règle Pourcentage de codage (espace est encodé avec %20
).Le malin nommé rlencode () et rldecode () .
Cependant, vous ne devriez pas avoir besoin d'utiliser urldecode()
sur les variables qui apparaissent dans $_POST
et $_GET
.
Voici mon cas d'utilisation, qui nécessite une quantité exceptionnelle d'encodage. Vous pensez peut-être que cela a fonctionné, mais nous utilisons cela pour la production. Par coïncidence, cela couvre tous les types d’encodage, alors j’envoie un tutoriel.
Quelqu'un vient d'acheter une carte-cadeau prépayée ("jeton") sur notre site Web. Les jetons ont des URL correspondantes pour les échanger. Ce client souhaite envoyer l'URL par courrier électronique à quelqu'un d'autre. Notre page Web comprend un lien mailto
qui leur permet de le faire.
// The order system generates some opaque token
$token = 'w%a&!e#"^2(^@azW';
// Here is a URL to redeem that token
$redeemUrl = 'https://httpbin.org/get?token=' . urlencode($token);
// Actual contents we want for the email
$subject = 'I just bought this for you';
$body = 'Please enter your shipping details here: ' . $redeemUrl;
// A URI for the email as prescribed
$mailToUri = 'mailto:?subject=' . rawurlencode($subject) . '&body=' . rawurlencode($body);
// Print an HTML element with that mailto link
echo '<a href="' . htmlspecialchars($mailToUri) . '">Email your friend</a>';
Remarque: ce qui précède suppose que vous exportez vers un document text/html
. Si votre type de support de sortie est text/json
, Utilisez simplement $retval['url'] = $mailToUri;
Car l'encodage de sortie est géré par json_encode()
.
Tu devrais voir:
"args": {
"token": "w%a&!e#\"^2(^@azW"
},
Et bien sûr, ceci est la représentation JSON de $token
Ci-dessus.
Vous pouvez utiliser les fonctions de codage d’URL PHP a la
rawurlencode()
une fonction
ASP a le
Server.URLEncode()
une fonction
En JavaScript, vous pouvez utiliser le
encodeURIComponent()
une fonction.