php - 从字符串 php 中提取重量 kg
问题描述
你好我有这样的字符串
$str = "tea dae 15 abc 7,2 kg abc aa 1 aa"
我只想得到这样的公斤值
$str = "7,2kg";
我试过这个但不工作
$result = str_replace(' ', '', $str);
$result = str_replace(',', '.', $result);
$result = strtok($result, "kg");
$result = str_replace('.', ',',(float) filter_var( $result, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ));
感谢帮助
解决方案
您可以使用
$str = "tea dae 15 abc 7,2 kg abc aa 1 aa";
$result = "";
if (preg_match('~(\d+(?:,\d+)?)\s*(kg)\b~', $str, $m)) {
$result = $m[1] . $m[2];
}
echo $result;
请参阅PHP 演示。
正则表达式是
(\d+(?:,\d+)?)\s*(kg)\b
请参阅正则表达式演示。它会匹配
(\d+(?:,\d+)?)
- 捕获组 1:\d+
- 一位或多位数字(?:,\d+)?
- 逗号和 1 个或多个数字的可选序列
\s*
- 0 个或多个空格(kg)\b
-kg
在第 2 组中作为整个单词捕获(\b
是单词边界)。
最终结果是两个组的串联。
推荐阅读
- javascript - Nodemailer连接错误仅在服务器上
- r - ggplot2如何仅对数据的某些行着色
- java - 将jOOQ表达式分配给局部变量时如何防止Eclipse添加@NotNull注释
- python - 在 python 套接字服务器上从客户端接收文件
- tarantool - 如何在 tarantool 中将乙烯基转换为 memtx?
- string - 这个模板字符串/公式字段的格式是什么?
- vba - MS Access – 过滤#Multiple Criteria 同时忽略空值
- python - x 和 y 必须具有相同的第一维,但具有形状 (2,) 和 (1,)
- c# - 自动推断 DbContext 类型
- sas - 使用 SAS 中的循环列出每个变量出现的频率