2013-12-09 130 views
0

如何將下列字符串分成5個變量?如何將一個字符串分成5個變量?

(Bedrijfsnaam:變量1)(Contactpersoon(achternaam):變量2)(電子郵件住址:variable3)(OS:variable4)(OS用戶:variable5)。[ID:416129849993661001953:ID]

我總是這個字符串,我需要像這樣的變量:

$var1 = "variable1"; 
$var2 = "variable2"; 
$var3 = "variable3"; 
$var4 = "variable4"; 
$var5 = "variable5"; 

其餘的字符串是不必要的。

回答

0

使用正則表達式,這應該讓你開始:

$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]); 
} 

我通常不會「手一個人一條魚型」。所以如果你有任何關於這裏發生的問題,請告訴我。

+0

所有的變量也可以是空的,例如(Bedrijfsnaam :)。我需要把它也保存爲一個空變量。用正則表達式可能嗎? – Daan

+0

我改進了我的答案以適應您的要求。 –

+1

非常感謝,也很清楚地解釋它。 – Daan

0

這可能是一個解決辦法:

<?php 

$pattern = ':([a-z0-9\s]*)'; 
$subject = '(Bedrijfsnaam:variable1) (Contactpersoon (achternaam):variable2) (E-mail adres:variable3) (OS:variable4) (OS User:variable5) [ID:416129849993661001953:ID]'; 

preg_match_all(
    $pattern, 
    $subject, 
    $matches 
); 

var_dump($matches[1]); 

我編輯,以便空間也認識到了模式。

+0

字符串之間沒有空格。 – Daan

相關問題