0

请我有流动的字符串:

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

我想进入一个数组blabla-blabla - 12345blobl-ooo - 54123hihihi - 98745

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

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

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

请各位高手指教?

PS:我不能使用 list 和 explode 因为我不知道我的字符串中的元素数量。

4

3 回答 3

3

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

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

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

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

$parts = explode(', ', $str);
foreach($parts as $part) {
    // ...
}
于 2013-01-31T11:16:50.303 回答
1

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

"/[\w\-]+ \- \d+/"
于 2013-01-31T11:17:26.197 回答
0

您可以使用preg_split函数。

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

输出数组([0] => blabla-blabla - 12345 1 => blobl-ooo - 54123 2 => hihihi - 98745)

演示

于 2013-01-31T11:32:27.197 回答