• ベストアンサー

特定なフォーマットで入力されているかチェックするには

phpでフォームで入力された文字列が特定な フォーマットで入力されているか チェックする事ができますか? 例 XXX-XX-XXX X:半角英数字 -:半角ハイフン 上記のフォーマット以外で入力されている場合には エラーにしたいのですが。

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

正規表現のパターンを使ってフォーマットを表せばできます。 1文字以上の半角英数字の繰り返しなら[a-zA-Z0-9]+になるので正規表現パターンは [a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+ になります。 これが行の先頭( ^ )から最後( $ )まで全ての部分でマッチすようにということなので ^[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+$ これをPHPのpreg関数で使って $num = "1DD23-45aa6-7Rg89"; if (preg_match("/^[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+$/", $num)) { echo "フォーマットOK"; } else { echo "フォーマットが違います"; } みたいにします。

rabu_chihaha
質問者

お礼

ありがとうございます。 大変わかりやすく書いていただいて よくわかりました。 ありがとうございました。

その他の回答 (1)

回答No.1

rabu_chihahaさん、こんにちは。 正規表現を使ってみてはいかがでしょうか。 if(! preg_match("/^[0-9a-z][0-9a-z][0-9a-z]\-[0-9a-z][0-9a-z]\-[0-9a-z][0-9a-z][0-9a-z]$/i", $str)) { print "フォーマットが違います。"; exit; } のような形です。

rabu_chihaha
質問者

お礼

ありがとうございます。 正規表現を使えばいいのですね。 できました。 またよろしくお願いいたします。

関連するQ&A