首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP preg_replace_callback()编译失败:缺少)

PHP preg_replace_callback()编译失败:缺少)
EN

Stack Overflow用户
提问于 2012-07-19 02:37:44
回答 2查看 388关注 0票数 0

好的,我有这个小助手函数

代码语言:javascript
复制
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输出中创建匿名函数。如果你能给我推荐一个更好的剧本,那对我会有很大的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-09 21:33:22

我很确定原作者的本意是:

代码语言:javascript
复制
'/(?<=:)"function((?:(?!}").)*})"/'
                               ^

如果希望稍后捕获替换的函数体(带有参数),那么替换函数将在稍后使用0索引(完全匹配),这样您也可以删除第一个(

代码语言:javascript
复制
'/(?<=:)"function(?:(?!}").)*}"/'
                 ^
                 +-- a "(" deleted

这也能起作用(也能少吃一点内存)。

票数 1
EN

Stack Overflow用户

发布于 2012-07-19 02:48:13

中有一个未闭括号。

代码语言:javascript
复制
'/(?<=:)"function((?:(?!}").)*}"/'

编辑器不会发现它,因为它不会在字符串中验证内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11553169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档