好的,我有这个小助手函数
public static function toJSON($arr){
$json = json_encode($arr);
return preg_replace_callback('/(?<=:)"function((?:(?!}").)*}"/',
function($string){
return str_replace(array('\"','/','"','n','t'),array('"','/','"','',''),substr($string[0],1,-1));
},$json);
}现在,我为preg_replace_callback()函数的回调创建了一个匿名函数,我已经检查了3次是否遗漏了一个括号,但是我的IDE(zend )似乎没有显示任何未闭括号。
我的错误是
在偏移量30 (X:\xampp\htdocs\aya\protected\xxx\xxxArray.php:180处的preg_replace_callback()编译失败:丢失)
我哪里弄错了?
注意事项:这个小助手函数的目的是让我在json输出中创建匿名函数。如果你能给我推荐一个更好的剧本,那对我会有很大的帮助。
发布于 2013-11-09 21:33:22
我很确定原作者的本意是:
'/(?<=:)"function((?:(?!}").)*})"/'
^如果希望稍后捕获替换的函数体(带有参数),那么替换函数将在稍后使用0索引(完全匹配),这样您也可以删除第一个(:
'/(?<=:)"function(?:(?!}").)*}"/'
^
+-- a "(" deleted这也能起作用(也能少吃一点内存)。
发布于 2012-07-19 02:48:13
中有一个未闭括号。
'/(?<=:)"function((?:(?!}").)*}"/'编辑器不会发现它,因为它不会在字符串中验证内容。
https://stackoverflow.com/questions/11553169
复制相似问题