我正在尝试从变量($ 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
答案 0 :(得分:0)
答案 1 :(得分:0)
您在正则表达式的末尾有一个多余的空间,这会破坏它。删除它,它将与2 x 5
相匹配。您应该可以通过在正则表达式的每一边添加\.
来进一步扩展它:
if (preg_match("/[[:digit:]\.]*\ x [[:digit:]\.]*/", $text, $match)) {
答案 2 :(得分:0)
您的正则表达式不匹配。您想要:
/\d+(?:\.\d+)? x \d+(?:\.\d+)? /
1个或多个数字(可选:点,一个或多个数字),空格,x,空格,一个或多个数字,(可选:点,一个或多个数字),空格