ちょっと思うところあって調べたのでメモしておきます。 結局使わない事になったんですが。 mb_regex_encoding('UTF-8'); if (preg_match("/^[ぁ-んー]+$/u", $str)) { // ひらがな } else if (preg_match("/^[ァ-ヶー]+$/u", $str)) { // カタカナ } else if (preg_match("/^[一-龠]+$/u", $str)) { // 漢字 } mb_regex_encoding('UTF-8'); は正規表現の基準となる文字コードの指定です。 php.ini がいじれる環境なら、[mbstring] セクションに、mbstring.internal_encoding = UTF-8 とした方が良いかと思います。 [あ-ん] 等の指定は、Unicode 上でひらがなやカタカナを表す