PHP如何使用regEX将数字和字符串分隔为'space-space'

时间:2013-01-31 11:12:09

标签: php regex

我有流畅的字符串:

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

我想要一个阵列 blabla-blabla - 12345 blobl-ooo - 54123 hihihi - 98745

为此,我正在考虑使用REGEXP,所以我尝试过:

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

但这只得到字符串部分而不是数字。

请任何建议大师?

PS:我不能使用list并爆炸,因为我不知道我的字符串中的元素数量。

3 个答案:

答案 0 :(得分:3)

对于正则表达式,请尝试:

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

\ w 处理所有字母或数字, \ d 处理所有数字。

否则,即使您不知道字符串的大小,也可以使用explode:

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

答案 1 :(得分:1)

我不确定为什么你不能用explode来分割逗号。您不需要知道要执行此操作的元素数量。但是,像这样的正则表达式应该有效:

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

答案 2 :(得分:0)

您可以使用preg_split功能..

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

输出  排列 (     [0] =&gt; blabla-blabla - 12345     1 =&gt; blobl-ooo - 54123     2 =&gt; hihihi - 98745 )

DEMO