ホームページ > php教程 > php手册 > phpのurlencode()関数とurldecode()関数の文字エンコード原理の詳細な説明

phpのurlencode()関数とurldecode()関数の文字エンコード原理の詳細な説明

WBOY
リリース: 2016-06-13 12:03:42
オリジナル
1748 人が閲覧しました

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

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

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

Enter キーを押す前

Enter キーを押した後


2. urlencode() 関数の原理

urlencode()関数を使用する URL 文字列のエンコーディング。ここでは主に中国語の文字のエンコーディングについて説明します。

例は次のとおりです。

コードをコピーします。コードは次のとおりです:

echo urlencode('兄に執着しないでください');//出力: ��Ѫ������



urlencode() 関数の原理は、まず中国語の文字を 16 進数に変換し、次に各文字の前に識別子 % を追加することです。この原理を理解した後、カスタマイズされた URL エンコード関数を実装できます。コードは次のとおりです。 >



コードをコピー

コードは次のとおりです: $string = "私に執着しないでください"; length = strlen($string);

echo $string;

$result = array() ;
//Decimal
for($i=0;$iif(ord($string[$i])>127){
$ result[] = ord($string[$i]).' '.ord($string[ $i]) ;
}
}
var_dump($result);
//16 進数
$strings = array();
foreach($result as $v){
$dec =explode(" ",$v);
$strings[] = "% ".dechex($dec[0])." "."%".dechex($dec[1]); 🎜>}
var_dump($strings)




上記のコードについては、「PHP における漢字変換の原理の解析」の記事「漢字の 16 進数への変換原理の解析」で詳しく説明しています。漢字を16進数に変換すると同時に、各文字の前に特別な識別子%を追加することで、urlencode()関数の機能を実現します。 出力結果は次のようになります。
次に、出力結果を文字と比較します。上記のように、urlencode() を使用して直接エンコードされます: ��Ѫ������


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


3. urldecode() 関数の原理


urldecode() 関数を使用して、エンコードされた URL 文字列をデコードする例は次のとおりです
echo urldecode('��Ѫ������');//出力: Don't be執着しないでくださいThe urldecode( ) 関数は、urlencode() 関数の反対で、エンコードされた URL 文字列をデコードするために使用されます。上記の例と組み合わせると、文字列をデコードするカスタム関数を実装することもできます。 >

コードをコピー

コードは次のとおりです:

$string = '��Ѫ�����'; strlen($string); $hexs = array(); for($i=0;$iif($string[$i] == ' %'){ $hexs[] = $string[ $i].$string[ $i]

}

}
$num = count($hexs); ($i=0;$iecho chr( hexdec($hexs[$i])).chr(hexdec($hexs[ $i]));


上記のコード例では、まず文字列の規則に従って各文字を抽出し、次に hexdec() 関数を使用して 16 進数を 10 進数に変換し、次に chr() を使用します。 10 進数を文字に変換する関数を使用して、16 進数から文字への変換を実現します。出力は次のとおりです




4、urldecode() および urlencode() 関数の説明



urlencode

(PHP 3、PHP 4、PHP 5)

urlencode -- URL をエンコード stringDescriptionstring 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 urldecode ( string str )
指定されたエンコードされた文字列内の任意の %## をデコードします。デコードされた文字列を返します。


5. 参考リソースurlencode() の説明
urldecode() の説明
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート