【发布时间】:2014-04-27 02:59:06
【问题描述】:
各位网友大家好!
我在将一些旧函数更新为 preg_replace_callback 时遇到问题。 编辑:我做错了什么?
这是我的第一个(preg_replace/deprecated)函数:
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
@eval('$templ = new '.TEMPL_CLASS.';');
$buffer = preg_replace("#§([a-z0-9-_]+)\.?([a-z0-9-_]+)?#ie","\$templ->\\1(\\2)",$buffer);
$out .= $buffer;
}
fclose($handle);
}
第二个函数(这是我尝试转换为 preg_replace_callback):
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
@eval('$templ = new '.TEMPL_CLASS.';');
$buffer = preg_replace_callback(
'#§([\w-]+)\.?([\w-]+)?#',
function ($m) {
@$templ->$m[1]($m[2]);
},
$buffer
);
$out .= $buffer;
}
fclose($handle);
}
老了! M42的回答修复了以下错误:
警告:preg_replace_callback():修饰符 /e 不能与 第 52 行 /var/www/inc/engine.php 中的替换回调
); <-- line 52
$out .= $buffer;
编辑:我不知道如何处理这个渲染部分..
$buffer = preg_replace("#§([a-z0-9-_]+)\.?([a-z0-9-_]+)?#ie","\$templ->\\1(\\2)",$buffer);
现在它正在呈现一个空白页面..我猜错误在
返回模板($m[1], $m[2]);
【问题讨论】:
-
抱歉,有什么问题?
-
哦,感谢您的关注!我不知道我在尝试中做错了什么(第二个代码块)
-
好的,您遇到错误了吗?如果有,它们是什么?请将它们添加到问题中,这将使我们更容易为您提供帮助。
-
抱歉.. 我刚刚将错误添加到我的原始帖子中 :) 感谢您抽出宝贵时间解决我的问题
标签: php regex preg-replace deprecated preg-replace-callback