1차원 객체 속성 액세스 구문을 배열 요소 액세스 구문으로 바꿔야 합니다.
예:
$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_] 문자를 캡처합니다.*-> *
0개 이상의 공백, 하이픈, 보다 큼, 0개 이상의 공백과 일치합니다.(\w+)
하나 이상의 [a-zA-Z0-9_] 문자를 캡처합니다.
그런 다음 $1
및 를 사용하여 $2
배열 구문으로 원하는 동적 대체를 생성합니다.
다른 답변에서 언급했듯이 하나 이상의 문자 그대로 달러 기호( )를 찾는 것은 의미가 없습니다. \$+
왜냐하면 하나만 있어야 하기 때문입니다. "변수 변수"( $$variable
)를 사용하지 않기를 바랍니다. 그렇게 했다면 이 맥락에서는 중요하지 않습니다.