2013-01-31 23 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