2013-01-31 26 views
0
「太空空間」分開的數字和字符串

請我有流動的字符串:PHP如何獲得通過使用正則表達式

$str = 'blabla-blabla - 12345, blobl-ooo - 54123, hihihi - 98745'; 

我想在一個數組以得到布拉布拉-布拉布拉 - 12345blobl -ooo - 54123hihihi - 98745

要做到這一點,我想用這樣REGEXP我已經試過:

preg_match_all("/\b[\p{L}'-]+|[a-z]+\b/u", $str, $all); 

但這隻得到字符串部分而不是數字。

請任何建議的主人?

PS:我不能使用列表和爆炸,因爲我不知道我的字符串中元素的數量。

+2

爲什麼你不能在''上爆炸而不使用列表? – magnetik

+0

@magnetik應該是一個答案 – Anirudha

+0

在這個例子中的元素數量是3.但它可能是4或5,所以我不知道我應該傳遞給列表多少個變量! – Alpha

回答

3

對於您正則表達式,請嘗試:

preg_match_all('/([\w\-]+ \- \d+),?/u', $str, $all); 

\ W交易的所有字母或數字,和\ d全部位數。

否則,即使你不知道你的字符串的大小,你可以使用爆炸:

$parts = explode(', ', $str); 
foreach($parts as $part) { 
    // ... 
} 
1

我不知道爲什麼你不能使用explode分裂的逗號。您不需要知道要執行該操作的元素數量。然而,像這樣的正則表達式應該工作:

"/[\w\-]+ \- \d+/" 
0

可以使用preg_split函數它..

str = 'blabla-blabla - 12345, blobl-ooo - 54123, hihihi - 98745'; 
$result=preg_split('/,/',$str); 
echo "<pre>"; 
print_r($result); 

輸出 陣列 ( [0] =>布拉布拉-布拉布拉 - 12345 1 => blobl-ooo - 54123 2 => hihihi - 98745 )

DEMO