ホームページ >バックエンド開発 >PHPチュートリアル >PHP は素晴らしいこともできます - PHP のエンコードとデコードの詳細な説明、PHP のエンコードとデコードの詳細な説明_PHP チュートリアル
は前に書いてあります。 PHP は素晴らしいこともできます。PHP の構文機能と関連する関数ライブラリの古典的な使い方をまとめました。実際に大きな効果をもたらすわけではありませんが、これらの方法を習得することで、仕事や勉強に役立つことを願っています。誰もがブレインストーミングを行って、「PHP Can Do Big Things」をさらにエキサイティングなものにすることができます。転載の際は出典を明記してください(jb51.net)
2. 前書きPHP は一般的なスクリプト言語です。その主な理由は、Web プログラムのほぼ 50% に PHP が含まれているためです (統計は不完全です)。 PHP は開発用に豊富な関数と API インターフェイスを提供しており、その強力な組み込み関数や拡張機能を非常に便利に使用できます。この記事は、主に利点をまとめた「PHP で大きなことを実現できる」シリーズの最初の記事です。 PHP のエンコード、デコード、基数変換の知識。
3. PHP のエンコードとデコード
1. ASCII コーデック
ASCII(発音:英語発音:/ˈæski/ ASS-kee、American Standard Code for Information Interchange、American Standard Code for Information Interchange)は、ラテン文字に基づくコンピュータコーディングシステムです。主に現代英語の表示に使用されますが、その拡張バージョン EASCII は他の西ヨーロッパ言語を部分的にサポートでき、国際標準 ISO/IEC 646 と同等です。 World Wide Web により ASCII が広く使用されるようになり、2007 年 12 月までに徐々に Unicode に置き換えられました。 https://zh.wikipedia.org/zh/ASCII
PHP の基本関数には ASCII エンコードおよびデコード関数が組み込まれており、ASCII エンコードおよびデコードを簡単に実行できます。
int ord ( string $string ) //文字列 string の最初の文字の ASCII コード値を返します。
string chr ( int $ascii ) //指定された ASCII に対応する 1 文字を返します。
コードをコピーします コードは次のとおりです:
$str = '中国へようこそ';
関数 getNum($string){
$針 = 0;
$num = '';
While (isset($string[$needle])) {
$num .= $num==0?'':' ';
$num .= ord($string[$needle]);
$needle++;
}
$num を返します;
}
関数 getChar($num){
$num_arr =explode(' ', $num);
$string = '';
foreach ($num_arr として $value) {
$string .= chr($value);
}
$string を返します;
}
echo "文字を ASCII コード n に変換";
echo getNum($str);
エコー「n」;
echo "ASCII 文字 n";
echo getChar(getNum($str));
/* @OUTPUT
文字をASCIIコードに変換します
87 101 108 99 111 109 101 32 116 111 32 67 104 105 110 97
ASCIIコード文字
中国へようこそ
*/
?>
URL エンコードは、ブラウザーがフォーム入力をパッケージ化するために使用する形式です。ブラウザはフォームからすべての名前と値を取得し、それらを URL の一部として、または名前/値パラメータのエンコードとして個別にサーバーに送信します。たとえば、Web ページにアクセスすると、URL エンコードである % を含む文字列が多数存在します。
URLエンコードは通常UTF-8エンコード形式を使用するため、データ転送にはUTF-8形式を使用することをお勧めします。通常の意味での URL エンコードは、ASCII コードの 16 進数の前に % が付いているものとして理解でき、大文字と小文字の区別はありません。
コードをコピーします コードは次のとおりです:
string urlencode(string $str) //この関数は、文字列のエンコードと URL のリクエスト部分での使用を容易にし、変数を次のページに渡すことも容易にします。スペースは + としてエンコードされます。
string urldecode(string $str) //指定されたエンコードされた文字列内の任意の %XX をデコードします。プラス記号 ('+') はスペース文字にデコードされます。
string rawurlencode (string $str) //指定された文字を RFC 3986 に従ってエンコードし、スペースを %20 に変換します。
string rawurldecode (string $str) //文字列を返します。この文字列内のパーセント記号 (%) の後に続く 2 つの 16 進数はリテラル文字に置き換えられます。 +はスペースに変換されません。
+ とスペースの変換処理を除いて、2 つの関数セットは同じ使用法を持ちます。rawurlencode はスペースを %20 に変換しますが、+ をスペースに変換しません。urlencode は異なります。
コードをコピーします コードは次のとおりです:
$str_arr = 配列(
「www.jb51.net」、
「http://www.bkjia.com/」、
「PHP も素晴らしいことができます」
'!@#$%^&*()_+=-~`[]{}|\;:'"<>,./?'
);
foreach ($str_arr as $key => $value) {
echo $value,"t->t",urlencode($value),"n";
}
/* @OUTPUT
www.jb51.net -> www.jb51.net
http://www.bkjia.com/ -> http%3A%2F%2Fwww.jb51.net%2F
PHP は大きなこともできます -> PHP%E4%B9%9F%E8%83%BD%E5%B9%B2%E5%A4%A7%E4%BA%8B
!@#$%^&*()_+=-~`[]{}|;:'"<>,./? -> %21%40%23%24%25%5E%26 %2A%28%29_%2B%3D-%7E%60%5B%5D%7B%7D%7C%5C%3B%3A%27%22%3C%3E%2C.%2F%3F
*/
?>
3、Base64コーデック
Base64 は、64 個の印刷可能な文字に基づくバイナリ データの表現方法です。 2 の 6 乗は 64 に等しいため、6 ビットごとが 1 つの単位となり、印刷可能な文字に対応します。 3 バイトは 24 ビットで、4 Base64 ユニットに対応します。つまり、3 バイトは 4 つの印刷可能文字で表す必要があります。電子メールの転送エンコードとして使用できます。使用される文字は、大文字と小文字が 26 文字、数字が 10 文字、プラス記号「+」、スラッシュ「/」の合計 64 文字で、接尾語として等号「=」が使用されます。完全な Base64 定義は、RFC 1421 および RFC 2045 にあります。エンコードされたデータは元のデータよりわずかに長く、元のデータの 4/3 になります。電子メールでは、RFC 822 に従って、76 文字ごとにキャリッジ リターンとライン フィードを追加する必要があります。エンコードされたデータ長は、元の長さの約 135.1% であると推定できます。 https://zh.wikipedia.org/zh/Base64
string base64_encode(string $data) //base64 を使用してデータをエンコードします。
string Base64_decode (string $data [, bool $strict = false ]) //base64 エンコードされたデータをデコードします。
ケース: HTML ページの img タグは、src 属性で Base64 エンコーディングを使用して画像を出力できるため、HTTP リクエストの数を減らすことができます。
コードをコピーします コードは次のとおりです:
$string = file_get_content('3mc2.png');
echo '';
/* @OUTPUT
UEhQ5Lmf6IO95Yqe5aSn5LqL
*/
?>
4. HTML エンティティのエンコードとデコード
一部の文字は HTML で予約されており、特別な意味を持っています。たとえば、不等号「<」は HTML タグの先頭を定義するために使用されます。ブラウザにこれらの文字を正しく表示させたい場合は、HTML ソース コードに文字エンティティを挿入する必要があります。文字エンティティには、アンパサンド「&」とエンティティ名 (または「#」とエンティティ番号)、およびセミコロン「;」の 3 つの部分があります。 http://www.ascii.cl/htmlcodes.htm
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = “UTF-8″ [, bool $double_encode = true ]]] ) //次の HTML 特殊文字を含む HTML エンティティをエンコードします
1.「&」(アンパサンド)は「&」になります
2. ENT_NOQUOTES が設定されていない場合、'"' (二重引用符) は '"' になります。
3. ENT_QUOTES が設定されている場合のみ、”‘” (一重引用符) は ‘’ (または ') になります。
4.「<」(未満)は「<」になります
5.「>」(より大きい)は「>」になります
string htmlspecialchars_decode (string $string [, int $flags = ENT_COMPAT | ENT_HTML401 ]) //この関数の機能は htmlspecialchars() のまったく逆です。特殊な HTML エンティティを通常の文字に変換します。
同じ機能を持つ関数 htmlentities/html_entity_decode もあります。この関数のペアは中国語の文字も HTML エンティティにエンコードしますが、文字化けが発生するため、エンコードとデコードには htmlspecialchars を使用することをお勧めします。
ケース: XSS クロスサイト スクリプティング攻撃を防ぐには、ユーザーが送信したデータの HTML エンティティ変換が必要です:
コードをコピーします コードは次のとおりです:
$_POST['message'] = 'テスト メッセージ文字'">