• ベストアンサー

文字列から英数字の判別

PHP で質問です word1変数内に英数字がある場合以外はテキスト(変数名kana1) への入力必須をのエラーをだしたいのですが、うまくいきません。 基本動くのですが、カタカナのチ以降の文字を入れると通ってしまいます。 何かいけないでしょうか? if ($kana1=="") { if(preg_match("/[a-z0-9]+/",$word1)) {}else{ echo "<h2 class="subtitle">ふりがなを入力してください。</h2><br />"; $err_flg = "1"; } }

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

mb_internal_encoding()で正しいエンコードを指定してください。 できればUTFにして、 preg_match()もuを指定してやった方がよいと思います。

tamurad007
質問者

お礼

ありがとうございます しかし状況下わらずです。 やはり カタカナのチ以降の文字を入れると カタカナ チ以降を英数字と判断します。

tamurad007
質問者

補足

すみません。できました。 ファイル自体がsjisでとおりませんでした。単純なミスでした。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

うーん・・・通らないと思いますが・・・ <? mb_internal_encoding("UTF-8"); $word1="タチツテト"; if(preg_match("/[a-z0-9]+/iu",$word1)) print "match"; ?>

  • think49
  • ベストアンサー率59% (285/482)
回答No.2

^$ がないので部分一致になっています。 if(preg_match("/^[a-z0-9]+$/",$word1))

tamurad007
質問者

お礼

ありがとうございます しかし部分一致で大丈夫です。 変数$word1内に英数字が一文字でもあれば$kana1未入力 エラーチェックをしないで 英数字一文字でもない場合は、$kana1未入力エラーチェックする感じです。