0

重複の可能性:
文字、数字、および - _ の正規表現

PHP でサインアップ フォームを作成していますが、ユーザーのユーザー名に不要な文字が含まれていないことを確認する必要があります。に対して true を返す関数を作成できる方法はありますかA-Z a-z 0-9 - . _

また、何らかの理由で送信された確認メールを拒否するため、ユーザーのメールが yahoo から送信されないようにします。何__FILTER_VALIDATE_EMAIL__を追加する必要がありますか?

PS: 上記のキャラクターに問題はありますか? gmail では-_. および YouTube は英数字のみです。

4

4 に答える 4

8

a-zA-Z0-9_の代わりに\wを使用するように編集

if(preg_match("/[^\w-.]/", $user)){
    // invalid character
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL) || strstr($email,'@yahoo.com')) {
    // either invalid email, or it contains in @yahoo.com
}
于 2012-10-09T20:46:36.620 に答える
2
if(preg_match("/[^-A-Za-z0-9._ ]/", $userName)){
    // there are one or more of the forbidden characters (the set of which is unknown)
}
于 2012-10-09T20:41:23.513 に答える
2
<?php

    // The validator class

    class Validator
    {
        public function isValidUsername($username)
        {
            if(preg_match('/^[a-zA-Z0-9_\-\.]+$/', $username)) {
                return true;    
            }
            return false;
        }

        public function isYahooMail($mail) {
            if(preg_match('/^[a-zA-Z0-9_\-\.]+@yahoo.com$/', $mail)) {
                return true;    
            }
            return false;
        }
    }

    // The way to use this class

    $username = "otporan_123";
    $email = "otporan@gmail.com";

    $badUsername = "otporan*bad";
    $yahooEmail = "otporan@yahoo.com";

    $validator = new Validator();

    var_export($validator->isValidUsername($username));
    echo "<br />";

    var_export($validator->isValidUsername($badUsername));
    echo "<br />";

    var_export($validator->isYahooMail($email));
    echo "<br />";

    var_export($validator->isYahooMail($yahooEmail));
    echo "<br />";  

?>

このコードは以下を返します: true false false true

これはクラスですが、手続き型コードが好きな場合は、メソッドで何が起こっているかを確認し、独自の関数を書くことができます:)

お役に立てれば!

于 2012-10-09T20:51:53.327 に答える
-1
if (!preg_match('/\w\-/', $username) {
    //throw error 
}
于 2012-10-09T20:44:42.467 に答える