我需要将一维对象属性访问语法替换为数组元素访问语法
例子:
$variable -> child
$variable->child
都应转换为:
$variable['child']
答案1
找什么:
\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*) *-> *([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)
用。。。来代替
$\1['\2']
当然,将搜索模式设为“正则表达式”。这里,正则表达式表示PHP 变量是[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
。
答案2
寻找:(\$\w+) *-> *(\w+)
代替:$1['$2']
(\$\w+)
捕获文字美元符号,然后捕获一个或多个 [a-zA-Z0-9_] 字符*-> *
匹配零个或多个空格,然后是连字符,然后是大于号,然后是零个或多个空格(\w+)
捕获一个或多个 [a-zA-Z0-9_] 字符
然后使用$1
和$2
用数组语法生成所需的动态替换。
正如在另一个答案下所评论的那样,寻找一个或多个文字美元符号(\$+
)是没有意义的,因为应该只有一个——我希望您没有使用“变量变量”($$variable
),但如果您这样做了,在这种情况下就无关紧要了。