にのみ実行スクリプトで入力した場合はメールから特定のドメイン

StackOverflow https://stackoverflow.com/questions/1822280

  •  10-07-2019
  •  | 
  •  

質問

私が作り出してしまおうというもスクリプトが実行の場合はメールアドレスユーザは特定のドメイン.を作成しました正規表現のような場合、試験でregex明ですが、その使用は私のPHPスクリプトで行うかを有効なメールが無効になっています。この場合、たいメールによっては@secondgearsoftware.com,@secondgearllc.com またはasia.secondgearsoftware.com エコーの成功が他のすべてを不合格としなければならない。

$pattern = '/\b[A-Z0-9\._%+-]+@((secondgearsoftware|secondgearllc|euro\.secondgearsoftware|asia\.secondgearsoftware)+\.)+com/';
$email = urldecode($_POST['email']);
if (preg_match($pattern, $email))
{
    echo 'success';
}
else
{
    echo 'opposite success';
}

私はいま何futzedのパターンです。の手によりお願い申し上げます。

役に立ちましたか?

解決

ていただきたいのregexるだけの利用 stristr チェックだ。のようなことは:

<?php
// Fill out as needed
$domains = array('secondgearsoftware.com', 'secondgearllc.com');

$email = urldecode($_POST['email']);
$found = false;
for(i=0;i<count($domains);i++)
{
    if ($domains[i] == stristr($email, $domains[i]))
        $found = true;
}

if ($found) ...
?>

この機能stristrを返しますメールアドレスの一部で見つかり試合を終了するとのものと同じでなければならな試合です。技術的にあきも前の領域(ドメインfkdskjfsdksfks.secondgeartsoftware.comができるだけ挿入"@domainneeded.com未然に防止するためです。このコードでも長いが、簡単に拡張した新しいドメインを気にせずregex.

他のヒント

お正規表現するプランを選んでネットであることを伝えてくださいよfoo@secondgearsoftwaresecondgearsoftware.comで単純にすることが求められている:

$pattern = '/@((euro\.|asia\.)?secondgearsoftware|secondgearllc)\.com$/i';

ためのシェイプを作ってみましたので大文字と小文字を区別し、固定での文字列になります。

あるという事が必要になることを確認の前に、"@"-すべてを適切に検証ルーチンが必要であればうですが、すぐにチェックしたい場合はメールアドレスに所属しれます。

かも知れません。を利用する必要が /\b[A-Z0-9\._%+-]+@((euro\.|asia\.)secondgearsoftware|secondgearllc)\.com/i (注の i の終了をするという感じではなく、regex場合はnullを返します。いものを落とした +sれを無限に繰り返しになりえます。

こちらはスが容易なソリューションの正規表現

$domains = array(
    'secondgearsoftware',
    'secondgearllc',
    'euro\.secondgearsoftware',
    'asia\.secondgearsoftware'
);
preg_match("`@(" .implode("|", $domains). ")\.com$`i", $userProvidedEmail);

こちらはカップルの試験:

$tests = array(
    'bob@secondgearsoftware.com',
    'bob@secondgearllc.com',
    'bob@Xsecondgearllc.com',
    'bob@secondgearllc.net',
    'bob@euro.secondgearsoftware.org',
    'bob@euro.secondgearsoftware.com',
    'bob@euroxsecondgearsoftware.com',
    'bob@asia.secondgearsoftware.com'
);

foreach ( $tests as $test ) { 
    echo preg_match("`@(" .implode("|", $domains). ")\.com$`i", $test), 
         " <- $test\n";
}

結果(1通のコース)

1 <- bob@secondgearsoftware.com
1 <- bob@secondgearllc.com
0 <- bob@Xsecondgearllc.com
0 <- bob@secondgearllc.net
0 <- bob@euro.secondgearsoftware.org
1 <- bob@euro.secondgearsoftware.com
0 <- bob@euroxsecondgearsoftware.com
1 <- bob@asia.secondgearsoftware.com
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top