検索ページを作成します。ここで検索クエリを入力すると、フォームがsearch.php?query=your query
に送信されます。どのPHP関数が最適で、検索クエリのエンコード/デコードに使用する必要がありますか?
URIクエリの場合は urlencode
// urldecode
;その他の場合は rawurlencode
/ rawurldecode
を使用します。
urlencode
とrawurlencode
の違いは、
urlencode
application/x-www-form-urlencoded (スペースは+
)whilerawurlencode
は、プレーン Percent-Encoding に従ってエンコードします(スペースは%20
でエンコードされます)。巧妙に命名された rlencode() および rldecode() 。
ただし、$_POST
および$_GET
にある変数にurldecode()
を使用する必要はありません。
これは私の使用例で、例外的な量のエンコードが必要です。たぶんあなたはそれが不自然だと思うかもしれませんが、私たちはこれを実稼働で実行しています。偶然にも、これはあらゆる種類のエンコーディングを対象としているため、チュートリアルとして投稿しています。
誰かが当社のウェブサイトでプリペイドギフトカード(「トークン」)を購入しました。トークンには、引き換えるための対応するURLがあります。この顧客はURLを他の人にメールで送信したいと考えています。当社のWebページには、それを可能にするmailto
リンクが含まれています。
// 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>';
注:上記では、text/html
ドキュメントに出力することを想定しています。出力メディアタイプがtext/json
の場合、出力エンコーディングはjson_encode()
によって処理されるため、単純に$retval['url'] = $mailToUri;
を使用します。
見るべき:
"args": {
"token": "w%a&!e#\"^2(^@azW"
},
そしてもちろん、これは上記の$token
のJSON表現です。
URLエンコード関数を使用できますPHPは
rawurlencode()
関数
ASPには
Server.URLEncode()
関数
JavaScriptでは、
encodeURIComponent()
関数。