不能给preg_match限制

时间:2012-12-29 06:27:54

标签: php

我只想创建一个检查字符串的函数,我想告诉最小和最大字符数。

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}

1 个答案:

答案 0 :(得分:1)

正则表达式中不允许使用此类语法。试试这个:

if (preg_match('/^[A-Za-z\.\'\-]{' . $min . ',' . $max . '}$/', ... 

OR

if (preg_match(sprintf('/^[A-Za-z\.\'\-]{%d,%d}$/', $min, $max), ...