ある漢字が簡体字なのか繁体字なのか日本の漢字なのかを判定する関数が欲しかったので作成してみました。
ダウンロード:kcheck 0.1(ZIPファイル:9KB)
使用例
require_once 'kcheck.php';
$test = new kcheck();
$str = "東京都渋谷区神宮前";
$res = $test->stype($str);
echo "$str is $res";
$str = "北京市海淀区西四环北路";
$res = $test->stype($str);
echo "$str is $res";
$str = "臺北市信義區";
$res = $test->stype($str);
echo "$str is $res";
上記を実行すると次の出力が得られます。
東京都渋谷区神宮前 is jp
北京市海淀区西四环北路 is cn
臺北市信義區 is tw
北京市海淀区西四环北路 is cn
臺北市信義區 is tw
メンバメソッドは以下の2つだけです。
ctype($char)
漢字 $char が簡体字か繁体字か日本の漢字かを返します。返り値は文字列でcn(簡体字)、tw(繁体字)、jp(日本語)、unknown(不明)の4種類です。
stype($str)
ctype同様、文字列 $str が簡体字か繁体字か日本の漢字かを返します。返り値はctypeと同じです。文字列でcn、tw、jp、unknownの4種類です。
説明
コードを見れば分かりますが、簡体字にしかない漢字を収めた配列、繁体字にしかない漢字を収めた配列、日本語にしかない漢字を収めた配列を用意し、入力された漢字がそれら配列に含まれているか調べているだけです。そのため、日中台で共通している漢字は判断ができず、たとえば「北京市海淀区」を渡すと unknown が返ってきます。また、繁体字にしかない漢字として登録した漢字の中にはJIS第2水準に含まれている漢字が複数存在するため、twが返ってきたとしても100%繁体字とは言い切れません(同様に簡体字にもJIS第2水準の漢字がいくつか含まれています)。
なお、日本語にしかない漢字には主に新字体、国字を登録しています。踊り文字「々」とちょっと特殊な「〆」も登録してあります。
更新履歴
2021年10月8日 日本語の漢字のチェックから「芸」と「浜」を外しました(簡体字でも使われるため)。