打印单词之间的值PHP

x33g5p2x  于 2022-12-25  发布在  PHP
关注(0)|答案(1)|浏览(124)

在使用过敏原(面筋,大豆,celery ,坚果)的设施。能量值:971 kJ/234 kcal。100 g产品含有:脂肪18.1g,其中饱和脂肪酸6 g。
我需要显示卡路里值。
234kcal之前可能有一个空格,或者它可能像现在这样与/合并,可能所有内容都立即合并,或者可能有间隙
我需要出去反正只有千卡值。

$info_in_text  = "Made in a facility that uses allergens (GLUTEN, SOY, CELERY, NUTS). Energy value: 971kJ /234kcal. 100g of product contains: fat 18.1g, including saturated fatty acids 6g.";
$pieces = explode(" ", $info_in_text);
foreach( $pieces as $key => $value )
{
    if($pieces[$key] == 'value:' )
    {
        echo $pieces[$key+2];
     }
}

我试过了,但它不能正常工作。在任何情况下,它都必须只显示卡路里值(kcal)。在这种情况下,显示是否没有空格或没有合并所有内容。

t5fffqht

t5fffqht1#

使用带正则表达式的preg_match_all(),我们可以尝试:

$input = "Made in a facility that uses allergens (GLUTEN, SOY, CELERY, NUTS). Energy value: 971kJ /234kcal. 100g of product contains: fat 18.1g, including saturated fatty acids 6g.";
preg_match_all("/\d+(?:\.\d+)?\s*k?cal\b/", $input, $result);
print_r($result[0][0]);  // 234kcal

这里使用的正则表达式模式表示匹配:

  • \d+(?:\.\d+)?整数或小数
  • \s*可选空白
  • k?cal匹配calkcal
  • \b字边界

相关问题