walkingmask’s development log

IT系の情報などを適当に書いていきます

MENU

PHPでShift-JISで定義された文字列を列挙する

ググっても意外と出てこなかったので。

<?php
$sjis = '';
for ($i = hexdec('8140'); $i <= hexdec('989E'); $i++) {
    $char = mb_convert_encoding(hex2bin(dechex($i)), 'UTF-8', 'SJIS');
    if (strlen(bin2hex($char)) > 2) {
        $sjis .= $char;
    }
}
echo $sjis."\n";
  1. SJISの16進コードを10進に変換してforを回す
  2. 10進 -> 16進 -> バイナリ -> UTF-8と変換する
  3. strlenで長さが2以下だとUTF-8では定義されてないぽいので捨てる

だいたいこんな感じで求められた。

参考URL: http://ash.jp/code/unitbl21.htm