PHP - 规范化用户输入数组

时间:2010-12-16 09:50:34

标签: php arrays string

如果有这样的数组:

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

看起来真的很笨重。有更优雅的方式吗?一个可能有更好的表现?

3 个答案:

答案 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)