$pattern = '/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/se';
$replacement = "'{include file='.strtolower('\\1'). '}'";
$replacement = "'{include file='.strtolower('\\1'). '}'";
$source = preg_replace($pattern, $replacement, $source);
这一段代码有两处需要修改:
$pattern = '/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/se'; 中的'e'要去掉
$source = preg_replace($pattern, $replacement, $source); 改为:
$source= preg_replace_callback($pattern, function ($matcher) { return '{include file=' . strtolower($matcher[1]). '}'; },$source);
原因分析:
php5.5版本以上 就废弃了 preg_replace 函数中 /e 这个修饰符
参考资料:
http://www.cnblogs.com/jesu/p/5253615.html