2010-12-16 84 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]);