文字コードを取得して表示する - 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 を行わなくても大丈夫です。
[ もどる ]