我有流畅的字符串:
$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并爆炸,因为我不知道我的字符串中的元素数量。
答案 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 )