【问题标题】:put numbers from string into array将字符串中的数字放入数组
【发布时间】:2015-09-23 14:08:40
【问题描述】:

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

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

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

每个数字由@ 或x 分隔 所以对于Framing,第一个数组值是50,第二个是100,第三个是3.0

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

我该如何解决?

【问题讨论】:

  • 字符x 或@ 表示任何具体的东西,还是您对实际数字本身感兴趣?
  • 我只对数字感兴趣,x 和 @ 只是分隔符。

标签: php


【解决方案1】:

您可以像 as 一样简单地使用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

【讨论】:

  • 这是最干净的!
【解决方案2】:

你可以使用

$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"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多