- ベストアンサー
カタカナの文字列を検出する関数
function iskanamoji($str) { $str=mb_convert_kana(mb_convert_kana($str,"KV"),"A"); if(mbereg('^([ァ-ヶ]|[ー])*$',$str))return true; return false; } を作りましたがUTFー8で機能しません。 どのように直したらよいでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#4>SJISやEUCなどでもおかなければならないのでしょうか? デフォルトは、内部文字エンコーディングで実行されるので、 PHPの内部文字コード ソースを書いている文字コード に入力された文字列のコードを変換すれば必要ないように思います。
その他の回答 (4)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#3補> ウチで試したところでは function my_iskana($str){ mb_regex_encoding("UTF-8"); return mb_ereg('^([ァ-ヶ]|[ー])*$',mb_convert_kana($str,"KVA","utf-8")); } でいずれの場合もうまくいきました。 >その場合どうしたらいいでしょうか? おそらく、文字コードの問題だと思います。 取り扱う文字コードを統一することが肝要かと思います。
お礼
ありがとうございます。 mb_regex_encoding("UTF-8"); をおいたらいけました。 SJISやEUCなどでもおかなければならないのでしょうか?
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
mb_regex_encoding("UTF-8"); も試してみてください
お礼
ありがとうございます。 それも調べます。
補足
function my_iskana($str) { return mb_ereg('^([ァ-ヶ]|[ー])*$',mb_convert_kana($str,"KVA","utf-8")); } としましたが 「フール」 「プール」 「ブール」 はカタカナ文字列と認識されず 「ウール」 はカタカナ文字列と認識されました。 '^([ァ-ヶ]|[ー])*$', の部分が悪いのでしょうか? その場合どうしたらいいでしょうか?
- php504
- ベストアンサー率42% (926/2160)
$str=mb_convert_kana(mb_convert_kana($str,"KV"),"A"); はまとめて $str=mb_convert_kana($str,"KVA", "utf-8"); にしても大丈夫です
お礼
ありがとうございます。 まとめます。
- papillon68
- ベストアンサー率61% (42/68)
reimanさん、こんにちは。 string mb_convert_kana ( string str [, string option [, string encoding]] ) mb_convert_kana()の第3引数で文字の縁コーディングを指定できます。 参考にPHPマニュアルを貼ります。
お礼
ありがとうございます。
お礼
ありがとうございます。