ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

ひらがなチェックでつまずいたこと

人名のふりがなとして、ひらがなが入力されているか、JavaScriptPHPでチェックしています。

 f:id:AJYA:20130927125923j:plain

photo credit: fhisa via photopin cc

「ー(長音)」がひらがなと判定されない

正規表現でチェックしていて、PHPの場合、文字コードがECU-JPで作られたページでは、

preg_match("/^(¥xa4[¥xa1-¥xf3]|¥xa1[¥xb5¥xb6¥xab])+$/",$str)

でチェックして、UTF-8の場合は、

preg_match("/^[ぁ-ゞ]+$/u",$str)

でチェックしていました。

 

人名のふりがなとしては問題ありませんでしたが、そのまま他の用途でひらがなチェックとして利用したところ、「ー(長音)」が入力された場合、ひらがなではないと判定されました。

 

「ー(長音)」をひらがなと判定するには

EUC-JPとUTF-8の両方とも、文字コードと文字の並び順を確認したところ、「ー(長音)」には現在のチェックの仕方では対応できないことがわかりました。

 

「ー(長音)」を追加する以外ないので、ECU-JPで作られたページでは、

preg_match("/^(¥xa4[¥xa1-¥xf3]|¥xa1[¥xb5¥xb6¥xbc¥xab])+$/",$str)

でチェックして、UTF-8の場合は、

preg_match("/^[ぁ-ゞー]+$/u",$str)

でチェックするようにしたら、ひらがなと判定されるようになりました。

 

人名のふりがななら以前のままでも問題ない気がしていますが、ひらがなのチェックとしてはふさわしくないので、今後も気をつけていきたいです。