【发布时间】:2012-02-17 04:57:15
【问题描述】:
我有一个preg_replace_callback,它将闭包(匿名)函数作为第二个参数,它在本地工作得非常好,但是当我将它部署到实时环境时,它会导致错误 => 内部服务器错误 500。当我删除闭包它的工作原理。
$regExPattern = '/\<%(?<content>.*?)%\>/';
$template = preg_replace_callback($regExPattern, function ($matches) use ($dataItem) {
if(isset($dataItem[trim($matches['content'])])) {
return $dataItem[trim($matches['content'])];
}
else {
return '';
}
}, $template);
任何建议我如何解决这个问题。我需要在回调函数中使用 $dataItem 并将其传递给preg_replace_callback。
我的开发环境是代码点火器。
【问题讨论】:
-
您的生产服务器没有输出错误,这是一个很好的设计。你能检查错误日志并告诉我们实际的错误是什么吗?
-
你的开发环境中是否有没有 php 5.3 的机会?
-
就像@boobiq 我猜你的服务器很可能没有使用 PHP 5.3
-
是的,你是对的,PHP 版本 5.2.17。你能帮我将一个函数传递给 preg_replace_callback 并在其中包含 $dataItem 吗?
标签: php callback preg-replace closures internal-server-error