使用没有引号的数组键,如何在大项目上修复它?

时间:2015-01-07 10:21:17

标签: php arrays key e-notices

我使用大量没有引号的数组键启动了一个项目。

现在我遇到了这种方法的问题,当我开始我的项目时,我不知道这是不好的。我最后想要显示E_NOTICES错误,但是因为日志超载了数百万条通知PHP Notice: Use of undefined constant message - assumed 'key'而崩溃了。

所以要修复它我可以在整个项目中为我的键添加引号但是有太多了!有没有办法用算法或任何东西来修复我的代码?我想用带引号的字符串替换任何未定义的常量,EG: $my_array[key] $my_array['key']。{/ p>

感谢。

修改 我成功地使用rejex修复了所有声明,如下所示:

\[([^0-9\$\'\"\]])([^\'\"\]]*)\]\[\'\1\2\'\]

但这还不够,有很多情况下没有括号使用不带引号的键,EG:

array_key_exists(unquotedKey,$array)

$array['key'] = array( unquotedKey => array(96,56) );

等...

我可以使用正则表达式来修复所有情况,但我想我会有很多麻烦来处理它,有时候我的数组的键实际上是常量而且不应该被引用!如果有人有更好的解决方案,它会对我有很大的帮助。

完美的解决方案是能够在PHP用引号字符串替换未定义的常量后获取我的代码,是否可能?它每次编译都会这样做,它可能暂时存储在某个地方。

1 个答案:

答案 0 :(得分:1)

我使用Notepad++,其中包含搜索和替换文件功能(Ctrl + Shift + F)。使用正则表达式模式,您可以使用

搜索:

\$my_array\[([^\'\"]+)\]

替换

\$my_array\[\'$1\'\]

搜索会查找数组键方括号内的任何内容,其中没有'字符,这表示声明已经有效。

选择项目目录,然后点击“替换文件”。确保在出现问题时先备份整个项目。