• ベストアンサー

日本語以外の除去

お世話になります。 フォームから送られてきたデータで、 日本語以外のみ × 半角英数字+日本語 ○ 日本語のみ ○ というチェックを行いたいのですが なにかいい方法はないでしょうか? よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>韓国語や中国語は何バイト文字なんでしょうか? unicodeを使うことになると思いますが、 unicodeの場合unicode16の場合全ての文字が2バイトだったと思います。あと、最初にエンディアンコードが付く場合があります。 TUF-8の場合、1バイト~3バイトだったと思います。 unicodeの場合単純にバイトサイズ数で判別するという風にはできません。

SAY_MAN
質問者

お礼

遅くなってすいません。 ありがとうございました

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

単純には、 mb_detect_encoding で、検出したencodeがASCIIかどうか調べる * 扱う文字列を mb_convert_encoding で、まずはSHIFT_JISにする。 そうすると、半角1バイト全角2バイトだと期待できる。 mb_convert_kana を使って半角→全角にすると、 strlen(変換後の文字列)-strlen(変換前の文字列) で何文字半角文字が含まれていたかわかる。 ちょうど倍になっていれば、すべてが半角文字列だったことがわかる。

SAY_MAN
質問者

お礼

おそくなって申し訳ありません。 バイト数で調べればいいわけですね。 ありがとうございます。 追加質問になって申し訳ないのですが 韓国語や中国語は何バイト文字なんでしょうか?

関連するQ&A

専門家に質問してみよう