我使用大量没有引号的数组键启动了一个项目。
现在我遇到了这种方法的问题,当我开始我的项目时,我不知道这是不好的。我最后想要显示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用引号字符串替换未定义的常量后获取我的代码,是否可能?它每次编译都会这样做,它可能暂时存储在某个地方。
答案 0 :(得分:1)
我使用Notepad++,其中包含搜索和替换文件功能(Ctrl + Shift + F)。使用正则表达式模式,您可以使用
搜索:
\$my_array\[([^\'\"]+)\]
替换
\$my_array\[\'$1\'\]
搜索会查找数组键方括号内的任何内容,其中没有“或'字符,这表示声明已经有效。
选择项目目录,然后点击“替换文件”。确保在出现问题时先备份整个项目。