filter_var使用FILTER_VALIDATE_REGEXP

时间:2012-06-12 09:02:42

标签: php 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;
}

1 个答案:

答案 0 :(得分:20)

正则表达式应该在选项数组中。

$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

因为第一个版本我觉得你只匹配单字符串