- ベストアンサー
日本語以外の除去
お世話になります。 フォームから送られてきたデータで、 日本語以外のみ × 半角英数字+日本語 ○ 日本語のみ ○ というチェックを行いたいのですが なにかいい方法はないでしょうか? よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>韓国語や中国語は何バイト文字なんでしょうか? unicodeを使うことになると思いますが、 unicodeの場合unicode16の場合全ての文字が2バイトだったと思います。あと、最初にエンディアンコードが付く場合があります。 TUF-8の場合、1バイト~3バイトだったと思います。 unicodeの場合単純にバイトサイズ数で判別するという風にはできません。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.1
単純には、 mb_detect_encoding で、検出したencodeがASCIIかどうか調べる * 扱う文字列を mb_convert_encoding で、まずはSHIFT_JISにする。 そうすると、半角1バイト全角2バイトだと期待できる。 mb_convert_kana を使って半角→全角にすると、 strlen(変換後の文字列)-strlen(変換前の文字列) で何文字半角文字が含まれていたかわかる。 ちょうど倍になっていれば、すべてが半角文字列だったことがわかる。
質問者
お礼
おそくなって申し訳ありません。 バイト数で調べればいいわけですね。 ありがとうございます。 追加質問になって申し訳ないのですが 韓国語や中国語は何バイト文字なんでしょうか?
お礼
遅くなってすいません。 ありがとうございました