当使用Regex for for循环PHP时

Moh*_*yan 2 php regex loops

我需要在循环PHP中使用正则表达式我有如下问题.当我写这段代码时,它的工作正常:

$phone_number= '2222463';

for ($i=1; $i <= 9; $i++) {
  if((preg_match("/^[$i]{3}/", $phone_number))){
    return true;
   }
}
Run Code Online (Sandbox Code Playgroud)

但是下面的代码不会返回true:

for ($i=1; $i <= 9; $i++) {
  if((preg_match("/^[$i]{$i}/", $phone_number))){
    return true;
   }
}
Run Code Online (Sandbox Code Playgroud)

注意:{2} == {$ i}

dec*_*eze 9

$i = 3;
echo "{3}", PHP_EOL, "{$i}";
// {3}
// 3
Run Code Online (Sandbox Code Playgroud)

{$...}复杂的PHP字符串插值语法的一部分,并被{$i}解释为一个变量插值.你需要在这里转义/加倍括号:

"/^[$i]{{$i}}/"
Run Code Online (Sandbox Code Playgroud)