PCRE REGEX传递变量



我是PHP新手。如何在PHP中将$Variable传递到REGEX的Quantifier部分。

$name = "JOHN";
$lname = "SMITH";
$str2l = strlen($lname);
$num = "04454318000007010100000SMITH JOHN";
$re = "/([0-9]+.$names+[.$lname]{4})/";
$q = preg_match($re, $num, $matches);

上面的返回TRUE,它匹配,我想在量词{$str2l} 中传递下面的$variable

例如:$re = "/([0-9]+.$names+[.$lname]{$str2l})/";

我该如何让它发挥作用??除非我输入一个数字,否则我不会得到正确的回复。我不知道量词的.$lname的长度,除非我知道字符串长度。

这是一个字符串插值问题。在PHPs双引号字符串中,"$var""{$var}"相同。请参阅卷曲变量语法解释。

你可以在{}大括号上加倍:

$re = "/([0-9]+.$names+[.$lname]{{$str2l}})/";

或者在中补上号码

$re = "/([0-9]+.$names+[.$lname]{" . $str2l . "})/";

第一个选项看起来可能更令人困惑,也可能不会更令人困惑。但至少这不是毫无意义的串联。

最新更新