首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从PHP中的分隔字符串中提取浮点数

从PHP中的分隔字符串中提取浮点数
EN

Stack Overflow用户
提问于 2009-06-03 12:16:15
回答 6查看 12.3K关注 0票数 9

我希望将分隔的维度值字符串转换为浮点数。

例如

代码语言:javascript
复制
152.15 x 12.34 x 11mm

转到

代码语言:javascript
复制
152.15, 12.34 and 11

并将其存储在数组中,以便:

代码语言:javascript
复制
$dim[0] = 152.15;
$dim[1] = 12.34;
$dim[2] = 11;

我还需要处理一些场景,在这些场景中,分隔文本是不同的,数字后面可能有一个单位表达式,如:

代码语言:javascript
复制
152.15x12.34x11 mm

152.15mmx12.34mm x 11mm
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-06-03 12:19:31

代码语言:javascript
复制
$str = '152.15 x 12.34 x 11mm';
preg_match_all('!\d+(?:\.\d+)?!', $str, $matches);
$floats = array_map('floatval', $matches[0]);
print_r($floats);

(?:...)正则表达式构造称为非捕获群。这意味着在$mathces数组的一部分中没有单独返回块。在本例中,这不是绝对必要的,而是一个需要知道的有用结构。

注意:在元素上调用floatval()也不是绝对必要的,因为如果尝试在算术操作或类似的操作中使用它们,PHP通常会正确地处理这些类型。不过,这并不伤人,尤其是因为它只是一条线。

票数 18
EN

Stack Overflow用户

发布于 2009-06-03 12:33:32

代码语言:javascript
复制
<?php

$s = "152.15 x 12.34 x 11mm";

if (preg_match_all('/\d+(\.\d+)?/', $s, $matches)) {
    $dim = $matches[0];
}

print_r($dim);

?>

给出

代码语言:javascript
复制
Array
(
    [0] => 152.15
    [1] => 12.34
    [2] => 11
)
票数 4
EN

Stack Overflow用户

发布于 2009-06-03 12:21:27

代码语言:javascript
复制
$string = '152.15 x 12.34 x 11mm';
preg_match_all('/(\d+(\.\d+)?)/', $string, $matches);
print_r($matches[0]); // Array ( [0] => 152.15 [1] => 12.34 [2] => 11 ) 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/944400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档