如何在 preg_replace_callback 中包含文件

How to include a file within preg_replace_callback

假设 example.php 是

echo("123");

我如何更改此字符串 "abc{include 'example.php'}def" 中正则表达式匹配的包含规则与 php 执行的包含结果。 结果应该是"abc123def"

我编写了这段代码并且有效,但它不是包含文件中的 运行 php 代码。所以结果是 "abcecho("123);def",这不是我要找的。

preg_replace_callback("/\{\s*include\s*'(.*?)\'\s*}/", function($m) { return file_get_contents($m[1]);}, $str);

谢谢

您可以使用输出缓冲的功能。那么回调函数将是:

function($m) {
   ob_start();
   include($m[1]);
   $out = ob_get_contents();
   ob_end_clean();
   return $out;
}