1

ここでの最初の投稿なので、我慢してください笑

ここで自分の作業を確認したかっただけです。メールアドレスを検証するフォームがありますが、php 5.3 に変更するとエラーが発生します

誰かが私の変更を見て、それが機能していないために欠けているものを教えてください

オールドウェイ

function valid_email($email)
{
// check an email address is valid
if (ereg('^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$', $email))
return true;
else
return false;
}

新しい方法

function valid_email($email)
{
// check an email address is valid
if (preg_match(('^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$', $email))
return true;
else
return false;
}

フォームは電子メール検証なしで送信されます。私はその可能性が単純なことではありませんが、私はそれを解決することはできません

前もって感謝します

4

2 に答える 2

1

電子メール アドレスまたはハイパーリンクの検証に正規表現を使用しないでください。また、私の知る限り、ereg は廃止されました。今後は正規表現で preg を使用してください。電子メール アドレスを検証するためのコードは次のとおりです。

if (filter_var($email_address, FILTER_VALIDATE_EMAIL)) {
    echo "This email address: $email_address is invalid. Enter a new one please";
}

正規表現を使用する必要がある場合は、この RFC-822 regexを使用 してください。

于 2013-10-31T02:25:35.527 に答える
0

まず ereg とは異なり、preg_match ではパターンを区切り文字で囲む必要があります。これは通常「/」ですが、必要に応じて他の文字も使用できます。例えば、

preg_match('/^pattern$/', $email)

次に、コードには、関数名「preg_match((」の後に余分な「(」があり、代わりに「preg_match(」にする必要があります。

次の正規表現の使用を検討してください。username@-domain-.com などのダッシュで始まるドメイン名またはダッシュで終わるドメイン名を防止しますが、username@my-domain.com などのドメイン名内のダッシュは引き続き許可します

function isValidEmail($email)
{
    return preg_match('/\A[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}\z/', $email)
        && preg_match('/^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/', $email);
}

PHP で正規表現を使用して電子メール アドレスを検証するを参照してください。

于 2013-10-31T02:22:25.497 に答える