在PHP中输出小数

时间:2019-01-23 17:36:31

标签: php regex

我正在尝试从变量($ text)中提取两个数字,然后将它们相乘并输出结果。这两个数字可以是整数和浮点数。

当我尝试时:      $ text =“ 1张照片-黑白-2 x 5英寸。”
我得到:图像区域是10
这就是我想要的

<?php
$text = "1 photograph - b&w - 2 x 5.5 in.";


  if (preg_match("/[[:digit:]]*\ x [[:digit:]]* /",  $text, $match)) :
   print_r($match);

    $dimensions = trim($match[0]);
    $dimensions = explode(" x ",$dimensions);
    $image_area = (($dimensions[0]) * ($dimensions[1]));



    echo 'The image area is '.($image_area);


  endif;
 ?>

但是当我尝试:      $ text =“ 1张照片-黑白-2 x 5.5英寸。”
我出现黑屏

如何输出浮点数?


我的代码和输出:http://sandbox.onlinephpfunctions.com/code/4b45219fdcb7864442268459621bb506c24ce78f

3 个答案:

答案 0 :(得分:0)

regex表达式不足以区分整数和十进制数。 [[:digit:]]运算符仅匹配字符0-9。

此站点对于创建和测试正则表达式非常有用:

https://regex101.com/

答案 1 :(得分:0)

您在正则表达式的末尾有一个多余的空间,这会破坏它。删除它,它将与2 x 5相匹配。您应该可以通过在正则表达式的每一边添加\.来进一步扩展它:

if (preg_match("/[[:digit:]\.]*\ x [[:digit:]\.]*/",  $text, $match)) {

答案 2 :(得分:0)

您的正则表达式不匹配。您想要:

/\d+(?:\.\d+)? x \d+(?:\.\d+)? /

1个或多个数字(可选:点,一个或多个数字),空格,x,空格,一个或多个数字,(可选:点,一个或多个数字),空格

test online