Мне нужно заменить синтаксис доступа к свойствам одномерного объекта на синтаксис доступа к элементам массива.
Примеры:
$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
), но в данном контексте это не имело бы значения, если бы вы это делали.