人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの関数について教えてください。PHPは4.3.10です。フォームの入力欄に半角英字や半角数字のみを入力させたい場合、チェックする関数はあるのでしょうか?例えば下記のような場合です。無い場合はチェック出来るようなコードを教えていただけると助かります。
よろしくお願いします。

ローマ字氏名:あいうえお

半角英字のみの入力としたいのでエラー

TEL:あいうえお

半角数字のみの入力としたいのでエラー

●質問者: moks
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:PHP あいうえお エラー コード ローマ字
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● mugenkoubou
●20ポイント

半角英数字のチェックは

preg_matchを使用して以下のような感じでいけると思います。

if (preg_match('/[^\w]+/', $name)) {

echo 'error';

}

電話番号のチェックはis_numeric関数を使用すれば、

そのままチェックができると思います。

if (!is_numeric($tel)) {

echo 'error';

}

◎質問者からの返答

回答ありがとうございます。半角英字のチェックで半角スペースを許可したい場合はどのようにすれば良いのでしょうか?


2 ●
●50ポイント ベストアンサー

求めている回答と少しずれてしまうかもしれませんが、PEARを使える環境であるならば、HTML_QuickFormをインストールし、以下のようにすれば簡単にチェックできます。

(本当はフレームワークなどを使ってそちらのValidateにまかせてしまった方が良いのですが。)

<?php
 require_once "HTML/QuickForm.php";

 // フォームの生成
 $form = new HTML_QuickForm('formTest', 'post');

 $form->addElement('header', 'sampleHeader', '簡単なサンプル');

 $form->addElement('text', 'name', 'ローマ字氏名');
 $form->addElement('text', 'tel', '電話番号');
 $form->addElement('reset', 'btnClear', 'クリア');
 $form->addElement('submit', 'btnSubmit', '送信');

 // フィルタの適用
 $form->applyFilter('__ALL__','trim');

 // クライアント側でのJavaScriptチェック
 $form->addRule('name', '名前の入力が必要です。', 'required', '', 'client');
 $form->addRule('tel', '電話番号の入力が必要です。', 'required', '', 'client');

 // サーバ側でのチェック
 $form->addRule('name', '名前の入力が必要です。', 'required');
 $form->addRule('tel', '電話番号の入力が必要です。', 'required');
 // $form->addRule('name','名前は半角英数字のみにしてください。','alphanumeric');
 $form->addRule('name','名前は半角英字のみにしてください。','regex','/^[A-Z-_ ]+$/i');
 $form->addRule('tel','電話番号は数字のみにしてください。','numeric');

 if ($form->validate()) {
 // フォームの検証が成功したら、凍結する。
 $form->freeze();
 }
 $form->display();
?>

フォームの処理などは自分で全てのソースコードを書くよりも、上記のようにPEARを利用した方が簡易で、確実だと思います。

Smartyと連携させれば画面のデザインが簡単になります。(3つ目のURLの連載が参考になります。)

[参考URL]

参考になれば幸いです。

◎質問者からの返答

丁寧な開設ありがとうございました。大変参考になりました。試してみようと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ