我有这些多个字符串,如下面的3
- Framing 50mm x 100mmx3.0m
- Loglap 22x100x4.5
- Decking 32 x 150 @3.0
我想要做的是将数字提取到数组中。
每个的数字由@
或x
分隔
因此,对于Framing
,第一个数组值为50
,第二个数组为100
,第三个数组为3.0
我在考虑使用explode,但字符串格式不一致。
我如何解决?
答案 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
)
答案 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"]