2010-12-16 59 views
1

如果有一个这样的数组:PHP - 规范化用户输入阵列

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); 

似乎真的笨重。有没有更优雅的方式?一个也许有更好的表现?

回答

4

在每个字符串:

preg_match_all("/[ ,]*(\d+)[ ,]*/", $list, $matches); 

那么对于数字

$matches[1]
0

您可能需要使用使preg_splitarray_merge(PHP 4,PHP 5)

2

不知道关于性能,但你可以使用正则表达式在将所有内容加入字符串之后只抓取数字。

$string = implode(' ', $array); 
preg_match_all('/\d+/', $string, $matches); 
print_r($matches[0]);