[PHP-users 21288]Re: フォームの入力チェックについて

Yoshihisa Inoue bok @ bbsbrain.ne.jp
2004年 4月 17日 (土) 15:52:40 JST


ども井上です。

柳町 洋光 <hiromitsu @ m9.dion.ne.jp> wrote:

> 柳町です。
> 
> お世話になります。
> フォームに入力された情報をチェックするのに幾つかの方法があると思いますが、もっとも適した方法はなんでしょうか?
> いまやりたいのは、メールアドレスと電話番号で、半角英数かどうか、@.-_のうち@.が含まれていることを確認したいのですが、どうすればいいかよく分かりません。

こんな感じでどうでしょう?

<?php
$Email= 'test-test @ sample.ne.jp';
$Tel   = '99-9999';

//全角英数字を半角英数字に
$Email = mb_convert_kana($Email,'a');
$Tel    = mb_convert_kana($Tel  ,'a');

// E-mail チェック
if(!eregi("^([a-z,0-9,_,-]+)@([a-z,0-9]+)\.([a-z,0-9,\.]+)",$Email)){
        print " E-mail Error\n";
}
// 電話番号チェック
if(!eregi("^([0-9]+)-([a-z,0-9,-]+)",$Tel)){
        print " Tel Error\n";
}
?>

んでチェックに使っているeregiの中身を軽く説明すると

^([a-z,0-9,_,-]+)@([a-z,0-9]+)\.([a-z,0-9,\.]+)

まず先頭の ^ は、行の先頭という意味です。

続いて ([a-z,0-9,_,-]+) は、
[a-z,0-9,_,-] がaからzと0から9と_と-の文字
+ がその条件に合う文字が一文字以上続くという意味です。

@ はその次に @の文字が来るという意味です。

([a-z,0-9]+) はその次にaからzと0から9の文字が
一文字以上続くという意味です。

\. は、. がその次に来るという意味です。

([a-z,0-9,\.]+) は、はその次にaからzと0から9か.の文字が
一文字以上続くという意味です。

これで A @ B.C のフォーマットに合わないメールアドレスを検出できます。

#A が 0から9 aからz と _ と - の一文字以上の文字列
#B が 0から9 aからz  の一文字以上の文字列
#A が 0から9 aからz と . の一文字以上の文字列

By Yoshihisa Inoue


PHP-users メーリングリストの案内