Filter_var с использованием FILTER_VALIDATE_REGEXP
Я тренирую свои навыки начинающего php и хотел бы знать, почему этот script всегда возвращает 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
Регулярное выражение должно быть в массиве параметров.
$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
потому что с первой версией я думаю, что вы соответствуете только односимвольных строк
Ответ 2
Может ли кто-нибудь объяснить следующую функцию
function filterName ($ field) {
$field=filter_var(trim($field),FILTER_SANITIZE_STRING);
if(filter_var($field,FILTER_VALIDATE_REGEXP,
array("options"=>array("regexp"=>"/[a-zA-Z\s]+$/"))))
{
return $field;
}
else
{
return false;
}
}