将数字从字符串放入数组

时间:2015-09-23 14:08:41

标签: php

我有这些多个字符串,如下面的3

 - Framing 50mm x 100mmx3.0m
 - Loglap 22x100x4.5
 - Decking 32 x 150 @3.0

我想要做的是将数字提取到数组中。

每个的数字由@x分隔 因此,对于Framing,第一个数组值为50,第二个数组为100,第三个数组为3.0

我在考虑使用explode,但字符串格式不一致。

我如何解决?

2 个答案:

答案 0 :(得分:2)

您可以像{/ p>一样使用preg_match_all

$str = "Framing 50mm x 100mmx3.0m";

preg_match_all('/([\d.]+)/',$str,$m);
print_r($m[0]);

<强>输出:

Array
(
    [0] => 50
    [1] => 100
    [2] => 3.0
)

Demo

答案 1 :(得分:1)

您可以使用

$string = "50mm x 100mmx3.0m";
$formated = preg_replace("/[^0-9,.]/", ",", $string);

要替换字符串中的所有非数字值并用逗号替换它,这样可以更容易地转换为数组,但问题是您想要的字符串可能在逗号后用逗号填充。

以上代码将导致:50,,,,,100,,,3.0,

因此,解决方案可能是,用空值替换双逗号。

$ formated = str_replace(“,,”,“”,$ formated);

现在你有:50,100,3.0,

爆炸会产生一系列数字:

$array = explode(",", $formated);

Now you have ["50", "100", "3.0"]