文字コードを取得して表示する - PHP5 プログラミング

PROGRAM


文字コードを取得して表示する

PHP5 で、文字コードを取得してそれを表示したい場合には、次のような感じのプログラムを作成します。

// $string の 1 文字目を取得して、その文字コードを表示しています。

printf('%02X', ord(substr($string, 0, 1)));

ord という関数で指定された文字の文字コードを取得することができるので、そこに 1 文字を渡して、戻り値を printf 関数を使って 16 進数で表示しています。

ただし上記の方法では、マルチバイト文字列の場合には、先頭の 1 バイトを 1 文字とみなした結果が得られてしまいます。

 

マルチバイト文字でもそれを 1 文字として、その文字コードを取得したい場合には、次のような関数を用意して、取得する必要があるようでした。

// $string の 1 文字目を取得して、その文字コードを表示しています。引数にはマルチバイト文字のエンコードを指定します。

function mb_ord($string, $encode = 'UTF-8')

{

// マルチバイトの先頭 1 文字を取得します。

$word = mb_substr($string, 0, 1, $encode);

 

// 結果を保持する変数を初期化します。

$result = 0;

 

// マルチバイトの 1 文字を、実バイト数だけ繰り返します。

for ($i = 0; $i < strlen($word); $i++)

{

// 1 文字毎に文字コードに変換し、それまでに取得できた文字コードの値に追加して行きます。

$result = $result * 0x100 + ord(substr($word, $i, 1));

}

 

return $result;

}

第二引数に引数に渡す文字列の文字コードを指定して呼び出すことで、自動的に 1 文字を取得して、その文字コードを返すようになっています。

このとき $string で受け取る値が確実に 1 文字である場合には、mb_substr を行わなくても大丈夫です。


[ もどる ]