Preciso substituir a sintaxe de acesso à propriedade do objeto unidimensional pela sintaxe de acesso ao elemento da matriz
Exemplos:
$variable -> child
$variable->child
ambos devem ser convertidos para:
$variable['child']
Responder1
Encontre o que:
\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*) *-> *([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)
Substituir com
$\1['\2']
Faça o modo de pesquisa como "expressão regular", é claro. Aqui, uma regex representandoVariável PHPé [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
.
Responder2
Encontrar:(\$\w+) *-> *(\w+)
Substituir:$1['$2']
(\$\w+)
capture um cifrão literal e depois um ou mais caracteres [a-zA-Z0-9_]*-> *
corresponde a zero ou mais espaços, depois hífen, depois maior que, depois zero ou mais espaços(\w+)
capturar um ou mais caracteres [a-zA-Z0-9_]
Em seguida, use $1
e $2
para gerar a substituição dinâmica desejada com sintaxe de array.
Conforme comentado na outra resposta, não faz sentido procurar um ou mais cifrões literais ( \$+
) porque deveria haver apenas um - espero que você não esteja usando "variáveis variáveis" ( $$variable
), mas seria ' Não importa neste contexto se você fez isso.