我需要將一維物件屬性存取語法替換為陣列元素存取語法
例子:
$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
),但它不會如果你這樣做了,在這種情況下並不重要。