3

我使用许多不带引号的数组键开始了一个项目。

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

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

谢谢。

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

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

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

array_key_exists(unquotedKey,$array)

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

ETC...

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

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

4

2 回答 2

1

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

搜索:

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

代替

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

搜索在数组键方括号中查找尚不存在"'字符的任何内容,这表明声明已经有效。

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

于 2015-01-07T10:34:07.183 回答
0

使用此模式

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

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

$_POST[content_id]
于 2022-02-14T13:45:42.413 回答