preg_replace_callback 多行时不匹配

preg_replace_callback is not matching when multiline

您好,我有以下 preg_replace_callback,我在模板系统中使用它来执行内部代码 {{ php 代码在此处 }}

preg_replace_callback('/\{\{(.*?)\}\}/', function($match) {
    echo "<pre>";
        var_dump($match);
    echo "</pre>";  
}, $string);

当代码为单行时

$string = '{{ echo "Hello"; }}'

它工作正常,转储结果是

array(2) {
  [0]=>
  string(19) "{{ echo "Hello"; }}"
  [1]=>
  string(15) " echo "Hello"; "
}

但是当代码是多行时

$string = '{{ 
echo "Hello"; 
echo " My name is Ntan"; 
}}'

我没有得到转储结果,因为它不匹配

谁能帮帮我

使用强制点匹配换行符的 s 修饰符:

preg_replace_callback('/\{\{(.*?)\}\}/s', function($match) {
    echo "<pre>";
        var_dump($match);
    echo "</pre>";  
}, $string);