首页 > 解决方案 > 从字符串 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 ));

感谢帮助

标签: phpstring

解决方案


您可以使用

$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是单词边界)。

最终结果是两个组的串联。


推荐阅读