使用正則表達式,這應該讓你開始:
$sString = '(Bedrijfsnaam:variable1) (Contactpersoon (achternaam):variable2) (E-mail adres:variable3) (OS:variable4) (OS User:variable5) [ID:416129849993661001953:ID]';
if(preg_match_all('#:([^\)]+)#', $sString, $aMatches)) {
var_dump($aMatches[1]);
}
編輯: 你問我如何捕獲空變量。讓我稍微解釋一下正則表達式中正在發生的事情。
#
是分隔符,用於告訴正則表達式的起止位置,讓我們忽略它們。
第一個分隔符(:
)後面的冒號與您希望「捕獲」開始的字符串中的冒號匹配。
然後有趣的部分[^\)]+
,這匹配一切到它遇到的第一個括號)
。括號[]
(「字符類」)後跟^
基本上意味着匹配所有內容,但後面跟着^
,在我們的案例中爲)
。 +
告訴正則表達式匹配或更多。
所以我們要做的所有匹配或更多是使用astericks *
正是這樣做。
$sString = '(Bedrijfsnaam:) (Contactpersoon (achternaam):variable2) (E-mail adres:) (OS:variable4) (OS User:variable5) [ID:416129849993661001953:ID]';
if(preg_match_all('#:([^\)]*)#', $sString, $aMatches)) {
var_dump($aMatches[1]);
}
我通常不會「手一個人一條魚型」。所以如果你有任何關於這裏發生的問題,請告訴我。
所有的變量也可以是空的,例如(Bedrijfsnaam :)。我需要把它也保存爲一個空變量。用正則表達式可能嗎? – Daan
我改進了我的答案以適應您的要求。 –
非常感謝,也很清楚地解釋它。 – Daan