web-dev-qa-db-ja.com

FILTER_VALIDATE_REGEXPを使用したfilter_var

私は初心者のPHPスキルを練習していますが、このスクリプトが常にFALSEを返す理由を知りたいですか?

私は何が間違っているのですか?

$namefields = '/[a-zA-Z\s]/';

$value = 'john';

if (!filter_var($value,FILTER_VALIDATE_REGEXP,$namefields)){
    $message = 'wrong';
    echo $message;
}else{
    $message = 'correct';
    echo $message;
}
14
Iris

正規表現はオプション配列に含まれている必要があります。

$string = "Match this string";

var_dump(
    filter_var(
        $string, 
        FILTER_VALIDATE_REGEXP,
        array(
             "options" => array("regexp"=>"/^M(.*)/")
        )
    )
); // <-- look here

また、

$namefields = '/[a-zA-Z\s]/';

むしろあるべきです

$namefields = '/[a-zA-Z\s]*/'; // alpha, space or empty string

または

$namefields = '/[a-zA-Z\s]+/'; // alpha or spaces, at least 1 char

最初のバージョンでは、1文字の文字列のみに一致すると思います。

21
Cranio