0

文字列をチェックする関数を作成したいだけで、最小文字数と最大文字数を伝えたいのです。

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}問題なく動作しますが、関数を呼び出すときにこれらの数値を伝えられるようにしたいと考えています。$-記号が式を終了するため、機能しない理由は理解できると思いますが、機能する{$min, $max}ものに置き換える方法がわかりません。

4

1 に答える 1

1

このような構文は、正規表現では許可されていません。これを試して:

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

また

if (preg_match(sprintf('/^[A-Za-z\.\'\-]{%d,%d}$/', $min, $max), ... 
于 2012-12-29T06:55:40.547 に答える