我正在开发一个没有任何数组键引号的大型代码库,例如: $_GET[page]
。
有没有人有一个脚本/正则表达式,以编程方式为PHP的数组键添加引号?
更新
这是我最终做的事情:
egrep -lRZ "\.php" . | \
xargs -0 -l sed -i -e "s/\$\([a-zA-Z_]\+\)\[\([a-zA-Z_]\+\)\]/$\1['\2']/g"
这只处理一维数组。
答案 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
并一次更新所有文件(现在和将来)。