该错误很可能是由于
return preg_replace_callback($e, function($v) use ($s,$r) { return $r[$v[1]]; },$sql);您可能会使用不支持闭包的PHP 5.2或更早版本。您可以找出正在使用的PHP版本
phpinfo()。
您可能需要升级到PHP
5.3+,或者使用
create_function或编写静态函数并将其作为回调传递。
这是最后一个选项的示例,使用一个简单的类来存储状态
$r:
class My_callback { public function __construct($s, $r) { $this->s = $s; $this->r = $r; } function callback($v) { return $this->r[$v[1]]; }}function search_replace($s,$r,$sql) { $e = '/('.implode('|',array_map('preg_quote', $s)).')/'; $r = array_combine($s,$r); $c = new My_callback($s, $r); return preg_replace_callback($e, array($c, 'callback'), $sql);}


