PHP自动数组键引号

时间:2011-05-16 20:57:19

标签: php lazy-evaluation

我正在开发一个没有任何数组键引号的大型代码库,例如: $_GET[page]

有没有人有一个脚本/正则表达式,以编程方式为PHP的数组键添加引号?


更新

这是我最终做的事情:

egrep -lRZ "\.php" . | \
    xargs -0 -l sed -i -e "s/\$\([a-zA-Z_]\+\)\[\([a-zA-Z_]\+\)\]/$\1['\2']/g"

这只处理一维数组。

1 个答案:

答案 0 :(得分:2)

我讨厌过去这样做。这将涵盖除了严重的边缘情况和多维数组之外的所有情况。在所有文件(如Dreamweaver)中使用preg_replace或允许正则表达式进行质量替换的内容。

\$(\w+)\[(\w+)\]

像这样替换(\#,其中#是匹配偏移量):

$\1['\2']

我相信Dreamweaver的替换语法是:

$$1['$2']

Multidimentional可能适用(运行上述操作后):

\['(\w+)'\]\[(\w+)\]

['$1']['$2']

最后,受@ MarcB评论的启发,理论上你可以使用PHP::Tokenizer。请参阅the example并更改案例陈述以在T_ARRAY上触发,并在输出数组之前将其更改为符合(以及文件的其他所有部分)。如果一切正常,您将获得一个新文件,然后您可以循环到SPL::DirectoryIterator并一次更新所有文件(现在和将来)。