ホームページ > バックエンド開発 > PHPチュートリアル > PHPのurlencode()関数とurldecode()関数の文字エンコード原理の詳しい説明_PHPチュートリアル

PHPのurlencode()関数とurldecode()関数の文字エンコード原理の詳しい説明_PHPチュートリアル

WBOY
リリース: 2016-07-21 15:22:30
オリジナル
1058 人が閲覧しました

原理は、中国語の文字を 16 進数に変換し、特定の規則に従って文字列を結合して、文字のエンコードとデコードを実現し、URL データ送信時の文字の整合性と互換性を確保することです。主に、中国語の文字のエンコード条件について説明します。

まず、FireFoxブラウザは中国語の文字をエンコードします

Firefoxブラウザに中国語の文字を入力すると、次のようにURLエンコードが自動的に実装されます

Enterキーを押す前
php-internet-url-encode-before
Enterキーを押した後
php-internet-url-encode

第二に、urlencode() 関数の原理

urlencode() 関数は、主に URL 文字列のエンコードに使用されます

例は次のとおりです

コードをコピーします。コードは次のとおりです:
echo urlencode('Don't be執着する兄弟');//出力: %B2%BB%D2%AA%C3%D4%C1%B5%B8%E7


urlencode() 関数の原理は、まず中国語の文字を 10 個の 16 進数に変換し、次に各文字の前に識別子 % を追加することです。コードは次のとおりです。コードをコピーします

コードは次のとおりです:
$string = "私に執着しないでください"; $length = strlen($string); //10 進数 for($i=0;$iif(ord($string[$i])>127){
$result[] = ord($string[ $i]).' '.ord($string[++$i]);
var_dump($result);
//Hex
$strings = array(); v){
$dec =explode(" ",$v);
$strings [] = "%".dechex($dec[0])." "."%".dechex($dec[1]) ;
}





上記のコードは、記事「漢字ベース変換原理の PHP 実装」の漢字の 16 進数への変換原理の分析で詳しく説明されています。 、同時に、それぞれの文字の前に特別な識別子 % を追加すると、urlencode() 関数の機能が実現されます。出力結果は次のとおりです
次に、出力結果を urlencode() を使用して直接エンコードされた文字と比較します。上記のように: %B2%BB% D2%AA%C3%D4%C1%B5%B8%E7

上記の例からわかるように、urlencode() 関数を使用して中国語の文字をエンコードすると、本質的に文字は次のように変換されます。 16 進数で最初の文字の左側に a を追加します 特別な識別子 %


三、urldecode() 関数の原則

urldecode() 関数を使用して、エンコードされた URL 文字列をデコードします。例は次のとおりです

php-self-urlencodeecho urldecode ('%B2%BB%D2%AA%C3% D4%C1%B5%B8%E7');//出力: 私に執着しないでください

urldecode() 関数は urlencode() 関数の反対ですエンコードされた URL 文字列をデコードするために使用されます。原理は、文字列を 16 進数に変換し、文字列をデコードするカスタム関数を実装することもできます




コードは次のとおりです:
$string = '%B2%BB%D2%AA%C3%D4 %C1%B5%B8%E7';
$length = strlen($string); array();
for($i=0;$iif($ string[$i] == '%'){
$hexs[] = $string[++$ i].$string[++$i];
}
} $num = count($hexs); for($i=0;$iecho chr(hexdec( $hexs[$i])).chr(hexdec($hexs[++$i])));
上記のコード例は、まず文字列のルールに従って各文字の 16 進数を抽出し、次に hexdec() 関数を使用して 16 進数を 10 進数に変換し、次に chr() 関数を使用して 10 進数を文字に変換して、次のことを実現します。 16 進数 16 進数を文字に変換します。出力結果は以下の通りです

php-self-urldecode

4、urldecode() と urlencode() 関数の説明

urlencode
(PHP 3, PHP 4, PHP 5)
urlencode -- URL 文字列をエンコードします
説明
string urlencode ( string str )
-_ を除くすべての非英数字文字がパーセント記号 (%) に置き換えられ、その後に 2 つの 16 進数が続き、スペースがプラス記号 (+) としてエンコードされた文字列を返します。このエンコーディングは、WWW フォーム POST データのエンコーディングと同じであり、application/x-www-form-urlencoded メディア タイプと同じエンコーディングです。歴史的な理由により、このエンコードは、スペースをプラス記号 (+) としてエンコードする点で RFC1738 エンコード (rawurlencode() を参照) とは異なります。この関数は、文字列のエンコードと URL のリクエスト部分での使用を容易にし、変数を次のページに渡すことも容易にします

urldecode
(PHP 3, PHP 4, PHP 5)
urldecode -- デコードされたエンコードされた URL string
説明
string urldecode ( string str )
指定されたエンコードされた文字列内の任意の %## をデコードします。デコードされた文字列を返します。

五、参考リソース
urlencode()の説明
urldecode()の説明

www.bkjia.com本当http://www.bkjia.com/PHPjc/324688.html技術記事原則は、中国語の文字を 16 進数に変換し、特定のルールに従って文字列を結合して文字のエンコードとデコードを実現し、URL データの送信中に文字の整合性と互換性を確保することです...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート