PCRE REGEX传递变量

时间:2015-07-05 22:58:09

标签: php regex

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

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

以上内容返回TRUE并且匹配,我想在量词$variable

中传递以下{$str2l}

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

我如何让这个工作?除非输入数字,否则我得不到正确的答案。 我不知道量词的.$lname的长度,除非我做String长度。

1 个答案:

答案 0 :(得分:0)

这是一个字符串插值问题。 "$var"与PHP双引号字符串中的"{$var}"相同。请参阅curly variable syntax说明。

你可以加倍{}花括号:

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

或者修补数字:

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

第一种选择可能会或可能不会更令人困惑。但至少它不是一个毫无意义的连接。