ホームページ  >  記事  >  バックエンド開発  >  PHP で漢字と 16 進エンコーディングを変換する 3 つの方法

PHP で漢字と 16 進エンコーディングを変換する 3 つの方法

WBOY
WBOYオリジナル
2016-07-25 08:53:511842ブラウズ
  1. //漢字を16進エンコーディングに変換します
  2. function hexencode($s) {
  3. return preg_replace('/(.)/es',"str_pad(dechex(ord('\1 ' )),2,'0',str_pad_left)",$s);
  4. }
  5. //16 進エンコーディングを漢字に変換します
  6. function hexdecode($s) {
  7. return preg_replace('/(w{2}) /e ',"chr(hexdec('\1'))",$s);
  8. }
  9. echo hexdecode(hexencode("北京へようこそ!"));
  10. ?>
コードをコピー

方法 2 、

  1. echo rawurlencode("ようこそ北京へ").'
    ';
コードをコピー

文字列を返します。この文字列内の文字以外の文字は -_ を除きます。パーセント記号 (%) の後に 2 桁の 16 進数が続くものに置き換えてください。 デコードするには: rawurldecode

方法3、 gbkバージョン: gbk エンコードでは、中国語の文字は 2 つの文字で構成されます。 ord() 関数で取得した文字の ASCII 値が 127 より大きい場合、現在の文字は漢字の前半であると判断でき、漢字の後半を取得する必要があります。 もちろん、この判断方法は特定の開発環境と組み合わせる必要がありますが、ascii 値が 127 を超える文字が 1 つある場合、この判断方法は明らかに間違っています。

PHP で漢字を 10 進数に変換する原理は、for ループ メソッドを通じて漢字の 2 文字を取得し、ord() 関数を使用して各文字を 10 進数に変換することです。 上記は次のとおりです: いいえ [178 187] 欲しい [210 170] ファン [195 212] 愛 [193 181] 兄弟 [184 231] PHP は、中国語の文字を 16 進数に変換する原則を実装しています。 まず ord() 関数を使用して各漢字の 10 進数を取得します。詳しくは [ord() 関数と chr() 関数の応用をマスターするための php 関数の記事] を参照してください。その後、dechex() 関数を使用します。各漢字を 16 進数に変換します。 コード:

    $string = "北京へようこそ!";
  1. $length = strlen($string);
  2. $result = array(); ($i=0;$i<$length;$i++){
  3. if(ord($string[$i])>127){
  4. $result[] = ord($string[$i])。 '.ord($string[++$i]);
  5. }
  6. }
  7. var_dump($result);
  8. //Hex
  9. $strings = array();結果は $v){
  10. $dec =explode(" ",$v);
  11. $strings[] = dechex($dec[0])." ".dechex($dec[1])
  12. }
  13. var_dump ($strings);
  14. コードをコピー
  15. utf-8 バージョン:
$string = "北京へようこそ!"; $length = strlen($string);
$result = array(); ;$i<$length;$i++){

if(ord($string[$i])>127){ $result[] = ord($string[$i]).' string[++$i]).'.ord($string[++$i]);

var_dump($result);
echo '
';
    //hex を作成します$strings = array();
  1. foreach($result as $v){
  2. $dec =explode(" ",$v);
  3. $strings[] = dechex($dec[0])." $dec[1])." ".dechex($dec[2])
  4. }
  5. var_dump($strings);
  6. コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。