2016-03-01 48 views
3

我想查找所有看起來像[!plugin=tesplugin arg=dfd arg=2!]的字符串,並將它們放入數組中。 重要功能:該字符串可以包含arg=或NOT(在某些情況下)。當然可以有任何數量的arg's。所以字符串可能看起來像: [!plugin=myname!][!plugin=whatever1 arg=22!]或甚至[!plugin=gal-one arg=1 arg=text arg=tx99!]。我需要把它們全部$str數組項正則表達式出錯

這裏是我做了什麼......

$inp = "[!plugin=tesplugin arg=dfd!] sometxt [!plugin=second arg=1 arg=2!] 1sd"; 
preg_match_all('/\[!plugin=[a-z0-9 -_=]*!]/i', $inp, $str); 

$str[0][0]包含:

[!plugin=tesplugin arg=dfd!] sometxt [!plugin=second arg=1 arg=2!] 

,而不是投入一個新的數組項目的每個表達式.. 我認爲我的問題在正則表達式..但無法找到一個。 Plz幫助...

+0

OMG!如此愚蠢的錯誤!)))))謝謝! –

回答

1

最後]需要轉義,字符類中的-需要在開始,結束或轉義。就像它是一個空格和下劃線之間的一系列ASCII字符一樣。

\[!plugin=[a-z0-9 \-_=]*!\] 

Regex101演示:https://regex101.com/r/zV4bO2/1