我只想创建一个检查字符串的函数,我想告诉最小和最大字符数。
function check_strict_name($str, $fieldname, $min, $max) {
$field_errors = array();
if (preg_match('%^[A-Za-z\.\'\-]{$min, $max}$%', stripslashes(trim($str)))) {
} else {
$field_errors[] = $fieldname;
$field_errors[] = "Info not accepted";
}
return $field_errors;
}
如果我将{$min, $max}
替换为{2, 25}
,它可以正常工作,但我希望能够在调用该函数时告诉这些数字。我想我理解为什么它不起作用,因为$ -sign结束了表达式,但我不知道如何用有效的东西替换{$min, $max}
。
答案 0 :(得分:1)
正则表达式中不允许使用此类语法。试试这个:
if (preg_match('/^[A-Za-z\.\'\-]{' . $min . ',' . $max . '}$/', ...
OR
if (preg_match(sprintf('/^[A-Za-z\.\'\-]{%d,%d}$/', $min, $max), ...