我有一个包含许多不带引号的array()键的项目
$ary = array( name => "Smith" );
用引号转换其键的任何方法?
$ary = array( 'name' => "Smith" );
我知道像
这样的代码$ary[name] = "Smith" ; // can change to $ary['name'] using editor with regexp
但问题是如果以这种方式编码
$ary = array( name => "Smith" );
// or worse
$ary = array(
name => "Smith",
class => "2A"
);
如何使用regexp为数组键添加引号?
这个项目有数以千计的php文件。任何机构都有这方面的经验,你建议搜索和替换所有的PHP文件。谢谢。
答案 0 :(得分:2)
您应该使用支持使用REGEX查找和替换选项的文本编辑器。
请参阅:How to fix associative array keys that lack single quotation marks in multiple files
答案 1 :(得分:0)
您需要使用find / replace
进行两次正则表达式传递替换$ary[name] = "Smith"
的第一个列出了here。
匹配:
(\$[a-zA-Z0-9]+\[)([^\]]+)\]
替换:
\1'\2']
https://regex101.com/r/aJ3cN9/1
第二个针对name => "Smith"
案例:
匹配:
([a-zA-Z0-9]+)\s*=>
替换:
'\1' =>
https://regex101.com/r/wH9cC5/1
要批量替换它,你可以使用vim作为described here,任何成熟的PHP IDE,如NuSphere或PhpStorm或许多文本编辑器(Notepad ++或SublimeText) - 只需检查菜单"搜索"在他们中。确保您要修改的文件位于版本控制之下,以便您可以回滚任何您不想要的更改。
此外,如果您的密钥可能包含下划线,则在两个regexp中都使用[a-zA-Z0-9_]
而不是[a-zA-Z0-9]
。