使用不带引号的数组键,如何在大项目中修复它



我使用很多数组键开始了一个没有引号的项目。

现在我对这种方法有问题,当我开始我的项目时,我不知道它很糟糕。我终于想显示E_NOTICES错误的原因,但它崩溃了,因为日志中超载了数百万个通知,例如 PHP Notice: Use of undefined constant message - assumed 'key'.

所以为了修复它,我可以在整个项目中为我的键添加引号,但有很多!有没有办法通过算法或任何方法来修复我的代码来实现这一点?我想用带引号的字符串替换任何未定义的常量,例如: $my_array[key]$my_array['key'].

谢谢。

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

[([^0-9$'"]])([^'"]]*)]['12']

但这还不够,在很多情况下,使用不带括号的不带引号的键,例如:

array_key_exists(unquotedKey,$array)

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

等。。。

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

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

我使用记事本++,它具有在文件中搜索和替换功能(Ctrl + Shift + F)。打开正则表达式模式后,您可以使用

搜索:

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

取代

$my_array['$1']

搜索在数组键方括号中查找尚未有 "' 字符的任何内容,这将指示声明已有效。

选择项目的目录,然后点击"在文件中替换"。确保首先备份整个项目,以防出现问题。

使用此模式

[a-zA-Z0-9]{1,}([([^'"$0-9]+)])

要查找不带引号的数组键,如下所示:

$_POST[content_id]

最新更新