漢字エンコーディング研究シリーズの第3回目となるPHP関数編では、ord()関数とchr()関数の応用をマスターしました。 前回【PHP基礎編 ASCIIコード比較表と文字変換の詳細解説】で学習しました。 ASCIIコードと文字変換の方法について説明しましたが、実際に使ってみると、文字変換には文字と10進数間の変換に使用するord()関数と、文字を10進数に変換する2つの特殊な関数が必要であることがわかりました。 chr() 関数は、10 進数を文字に変換します。2 進数では、8 進数、10 進数、16 進数の間のブリッジとして機能します。
1. ord() 関数の応用 ord() 関数は、文字の ASCII 値を返すために使用されます。ord('a') が返す ASCII 値を取得します。実際の開発では、最も一般的に使用されるものは、漢字の上位桁と下位桁の 10 進数を取得する文字インターセプト関数で使用されます。たとえば、一般的な漢字インターセプト関数の場合は、substrs() 関数または Cutstr() が使用されます。 PHPWind または Discuz! Forum のソース コードの関数では、戻り値が 127 より大きい場合は、文字の ASCII コード値を取得します。 、そして後半を取得して結合し、GBK や UTF-8 などの文字エンコーディングと組み合わせて完全な文字にします。
ord() 関数を使用して漢字を判定し、各漢字の ASCII 値を返す GBK エンコーディングを例に挙げます。コードは次のとおりです
:「兄貴に執着しないでください」は漢字5文字、合計10バイト(漢字1文字は2バイト)であり、各バイトを個別に印刷することはできません。上記のように正常に表示されます
2. chr() 関数の応用
$length = strlen($string);//オリジナルの中国語
var_dump($length);//長さ
$result = array();
for($i=0;$ iif(ord($string[$i])>127){
$result[] = ord($string[$i]).' '.ord($string[++$i]);
}
}
foreach($result as $v){
$decs =爆発(" ",$v);
エコー chr($decs[0] ).chr($decs[1]);
結果は以下の通りです
上記のコードは漢字を直接出力するのではなく、通常の漢字を出力します。原則として、まず各バイトの ASCII 値を取得し、それを chr() を通じてバイトに変換します。関数を使用して、2 つのバイトを変換して、完全な漢字を形成します。
ord() 関数と chr() 関数の説明を通じて、私たちは最初に漢字のエンコード原理を理解し、GBK エンコードでは 1 つの漢字が 2 バイトであることを理解し、ord() 関数と chr() 関数を使用しました。各バイトの変換方法を実装するには、次号の漢字コード研究シリーズの漢字コード変換の原理に注目してください。
参考文献
PHPWind と Discuz のインターセプト文字関数 substrs と Cutstr のパフォーマンス比較
http://www.bkjia.com/PHPjc/324709.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/324709.html技術記事漢字エンコーディング研究シリーズの第3回目となるPHP関数編では、ord()関数とchr()関数の応用をマスターしました。 前回【PHP基礎編 ASCIIコード比較表と文字変換の詳細解説】で学習しました。 ASCIIコードと文字変換について...