php - 寻求正则表达式以查找用作 PHP 数组索引的未引用字符串
问题描述
要跳过解释并回答实际问题,请跳到水平线下方。
PHP 变量必须以$
美元符号开头;例如$my_array
PHP 数组由标量索引(如 C++ STL 映射或 Python 字典(类似于 JSON));例如$my_array[0]
or $my_array[$my_val]
, or ,带字符串,$my_array['abc']
(单引号,或$my_array["abc"}
(双引号)。
我有一些不引用字符串索引的继承代码:$my_array[abc]
。这在以前的 PHP 版本中是允许的,但现在给我带来了问题。
所以,我正在寻找一个正则表达式来找到一个开放的方括号[
,后跟一个字符(a .. z, A ... Z
);或者,后面不是数字或美元符号,以更容易者为准。
精明的 PHP 编码人员会看到我可以DEFINE(abc, 'abc')
并且使用$my_array[abc]
,但这是一个异常值,我将手动处理它。
解决方案
你应该能够使用这样的东西:
/(?<varname>\$[a-z_]\w*) \s*\[\s* (?<index>[a-z_]\w*) \s*\]/ix
这匹配一个变量名,后跟一个方括号,后跟一个有效索引,一路上忽略空格。
如果您不希望变量名成为模式的一部分,您可以轻松地省略模式的开头(以防您也使用函数的返回值或其他任何内容来执行此操作)。
推荐阅读
- laravel - Laravel 路线不适用于 slug
- ios - 在设备方向上更新 widthAnchor
- makefile - makefile .mod 编译规则
- mysql - 需要帮助创建 1 个 MySQL 查询
- javascript - JS RegExp 表达式联合
- c - 为什么这种位移会起作用?
- python - 由于某种原因,从 S3 提供静态图像真的很慢(Flask,Heroku)
- git - 配置 gitlab 以将 ssh 上传到自定义目录和 apache
- asp.net - 如何让 Swashbuckle 生成带有日期(没有时间)的 Swagger 属性?
- r - 运行 2 个绘图命令后调用 Par(NEW=True) 而不绘图