2016-11-05 11 views
0

基本的には、正確な文字を含む電子メールを検証する必要があります。私の大学にID [email protected]の学生がいるとしましょう。私は、学生が電子メールの最初にxと入力し、次に学生カードの8つの乱数を入力し、最後に検証を受けるように強制します@ student.ncirl.ieが必要です。学生がウェブサイトに登録してログインできるようにしないのは賢明です。私が持っている電子メール検証php

コードは次のとおりです。PHPで\b[x0-9._%+-][email protected]\bが、イムだけ初心者とそれを実装することはできませんイム:私はこのようにそれを行うには考えていた

if (!filter_var($email,FILTER_VALIDATE_EMAIL)) { 
     $error = true; 
     $emailError = "Please enter valid email address."; 
    } else { 
     // check email exist or not 
     $query = "SELECT userEmail FROM users WHERE userEmail='$email'"; 
     $result = mysql_query($query); 
     $count = mysql_num_rows($result); 
     if($count!=0){ 
      $error = true; 
      $emailError = "Provided Email is already in use."; 
     } 
    } 

。誰かができるなら、私はサンプルコードを作成して私に手を差し伸べることができますか?または簡単な説明。ありがとうございました。

答えて

5

あなたはpreg_match()の機能を掘り起こす必要があります。

パターンで指定された正規表現に一致するものを検索します。例えば

$email = "[email protected]"; 
$result = preg_match('/^x[\d]{8}@student\.ncirl\.ie$/', $email); 

if ($result) { 
    ... 
    do some stuff 
    ... 
} 

regex101に正規表現のテスト。

説明:

^は(大文字と小文字を区別)で存在

一致単一文字

X文字は文字通りxは一致する文字列の開始位置をアサート以下のリスト:

[\ d] {8}

{8}数量詞を - ([0-9]に等しい)桁@student文字通り文字に一致

@studentと一致 D \正確に8回

を一致(大文字と小文字を区別)

は文字と一致します。文字通り文字に一致(大文字と小文字を区別)

ncirlは文字通り(大文字と小文字を区別)

をncirl。は文字と一致します。文字通り

すなわち(大文字と小文字を区別)は、文字は(大文字と小文字を区別)

$は、文字列の末尾位置を主張する、または文字通りすなわち一致する文字列の末尾のライン ターミネータの直前(もしあれば)

希望します。

+0

本当に助けていただきありがとうございます。 :) –

+0

ようこそ。 ; ) – JazZ

関連する問題