preg_replace和file_get_contents-如何获得${1}



我有一段代码:

echo preg_replace('/!(.*)!/', file_get_contents('${1}'), $str);

它的目的是用感叹号之间指定的文件内容替换所有!...!。然而,由于${1}没有被替换,它不起作用:

Warning: file_get_contents(${1}) [function.file-get-contents]: failed to open stream: No such file or directory

如果我编码:

echo preg_replace('/!(.*)!/', '${1}', $te);

一切都很好(即!...!之间的文本被文本本身替换(。

如何使file_get_contents中的${1}也被替换?

echo preg_replace_callback('/!(.*)!/', function($matches) {
    return file_get_contents($matches[1]);
}, $str);

给你。对这种替换使用preg_replace_callback,在这种替换中,您需要对匹配项调用一个自定义函数来提供替换字符串。

您也可以使用e修饰符,如下所示:

echo preg_replace('/!(.*)!/e', 'file_get_contents("$1");', $str);

但就像eval()函数一样,在某些情况下,这可能会变成邪恶

相关内容

  • 没有找到相关文章

最新更新