• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:全角カナチェックが動作しません)

全角カナチェックが正常に動作しない

このQ&Aのポイント
  • 全角カナチェックの動作が正常に行われず、ひらがながカタカナと認識されてしまいます。
  • 問題のコードでは、文字エンコードをUTF-8に設定し、全角カナチェックを行っています。
  • 改善するには、正規表現の記述を見直し、正しいカタカナの判定を行う必要があります。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> f(!ereg("^[$data2]+$",$data1)) mb_ereg と ereg は*別物*で、eregはマルチバイト文字に対応していません。 ですので、mb_regex_encodeingやらで何を設定しても意味がありません。 mb_ereg を使うか、utf-8なら pregでもOKですので そちらを使ってください。 if(!preg_match("/^[$data2]+$/u", $data1))

minnminn77
質問者

お礼

回答とても助かりました。 mb_regex_encodeingで設定して完璧だと思ったのですが、使ってる関数をしっかりチェックしてませんでした。 【マルチバイトとシングルバイト】 http://kemuri-net.dip.jp/~server/php/sample/mbstr.php

その他の回答 (2)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.3

ah..mb系の話か...orz mb系だとmb_strpos()のほうが直感的で使いやすいかもしれないですね。 // と負け惜しみを言ってみる。

参考URL:
http://jp2.php.net/mb_strpos
minnminn77
質問者

お礼

おお、こんな便利な関数もあるんですね。 今回はもう修正できませんが後々機会があったら使ってみようと思います。 回答ありがとうございましたm(__)m

  • wp_
  • ベストアンサー率54% (132/242)
回答No.1

if(!ereg("^[$data2]+$",$data1)) print "不正な文字が使用されてます"; ↓ if(ereg("^[$data2]+$",$data1))  print "不正な文字が使用されてます"; 条件が逆になってないですか。 「$data1にカタカナが含まれている = FALSE」 転じて「カタカナが含まれていないとき」 のときprint文へ移行しているような気が・・・ // $data2の内容をパッと見で何の呪文だろうと思ったorz

minnminn77
質問者

お礼

条件は読みの通り カタカナが含まれない→print文 で正しいです。 誤解を与える質問文で申し訳ありません。 プログラムの概要を表記するべきでした。 >$data2の内容をパッと見で何の呪文だろうと思ったorz そう言われてみると「ブベボッァィゥェォャュョヮー」あたりが(笑) 正規表現で[アーン]と書こうと思ったのですが、自信がなかったのでこれに落ち着いてしまいました。

関連するQ&A