- ベストアンサー
英字でエラーにしたいのにカナ文字もひっかかります。
- 正規表現で行き詰まっている場合、英字のみをエラーにしたいが、カナ文字もエラーになってしまい困っています。
- 名前に含まれる英字の混在をエラーとして表示したいが、全角カナ文字もエラーになってしまいます。
- 問題は理解できず、どこが間違っているのかわかりません。ご指導をお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>教えて頂いたとおりに書き換えてみても、全角カナで引っかかってしまいます 内部文字コードは何になっているんでしょうか? 入力する文字が使用している文字コードと違う場合は 例えば、シフトJISになっている場合は、 mb_ereg() の前に mb_regex_encoding("SJIS"); http://jp.php.net/manual/ja/function.mb-regex-encoding.php を指定してみてください。 あと、 入力された文字を内部文字コードに変更する必要があるのかもしれません。 その場合は、 mb_convert_encoding を使ってみてください。 http://jp.php.net/manual/ja/function.mb-convert-encoding.php
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#2>クロチャン SJIS 環境下でmb_ereg (#1)で"クロチャン"を試してみましたが、 引っかかりません。(英字が混じっているという表示はされない、実際に英字が混じっている時は表示されます。) う~ん、ちょっとわかりません。 ゴミデータがくっついてたりしませんでしょうか
お礼
BLUEPIXYさま。 何度も申し訳ありませんでした。 色々弄っている間に、 mb_regex_encoding("SJIS"); がコメントアウトになっておりました。 コメントアウトをはずすと、カナは引っかからなく なりました……。 貴重なお時間を頂、申し訳ありませんでした。 色々と、ありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>if( preg_match("/[a-zA-Z]/", $namekana ) ) { を if( mb_ereg("[a-zA-Z]", $namekana ) ) { にしてみたらどうでしょう
お礼
BLUEPIXY様。 こんばんは。 ご指導ありがとう御座いました。 教えて頂いたとおりに書き換えてみても、全角カナ で引っかかってしまいます(泣)
お礼
こんばんは。 丁寧なご指導ありがとうございます。 何度も、申し訳ありません。 使用文字コードは、SJISです。 PHPで冒頭に mb_language("ja"); mb_internal_encoding("sjis"); と記述もしております。 試しに、 if( preg_match("/[a-zA-Z]/", $namekana ) ) { print "<font color=\"red\">カナに英字が混じっています。カナは全角カナで入力して下さい".$namekana."</font><br>"; } で吐き出すエラー文へ echo mb_detect_encoding("あいう"); echo "<br>フォームからの値: "; echo mb_detect_encoding("$namekana "); を付け足してみたのですが、エラー結果(カタカナがひっかかってくる)は SJIS フォームからの値: SJIS カナに英字が混じっています。カナは全角カナで入力して下さいクロチャン でした。 なんども済みません。 どうか、よろしくお願い申し上げます。