如果有这样的数组:
array
0 => string '62 52, 53' (length=9)
1 => string '54' (length=2)
来自用户输入,你永远不知道他们输入的方式/内容;)
我最终想要的是:
array
0 => string '62' (length=2)
1 => string '52' (length=2)
2 => string '53' (length=2)
3 => string '54' (length=2)
我是这样做的:
$string = implode(',', $array);
$string = str_replace(', ', ',', $string);
$string = str_replace(' ', ',', $string);
$array = explode(',', $string);
看起来真的很笨重。有更优雅的方式吗?一个可能有更好的表现?
答案 0 :(得分:4)
在每个字符串上:
preg_match_all("/[ ,]*(\d+)[ ,]*/", $list, $matches);
然后阅读$matches[1]
了解数字
答案 1 :(得分:2)
不确定性能,但在将所有内容都加入字符串后,您可以使用正则表达式仅抓取数字。
$string = implode(' ', $array);
preg_match_all('/\d+/', $string, $matches);
print_r($matches[0]);
答案 2 :(得分:0)
您可能希望使用 preg_split 和 array_merge (PHP 4,PHP 5)