用 explode php 分隔字符串

Separate string with explode php

我在PHP中使用explode,因为我需要分隔一个字符串。这种类型:

$Data = '10 x 4';

我需要将数字分开,因为我会对它们进行数学运算。当它们是整数时,我的代码运行良好。如果我有一个 10 x 2.5 这种类型的字符串,它不会考虑 , 5 的小数部分。我该怎么做才能让我也考虑到这部分?

$data  = '10 x 2,5';
$array = explode("x", $data);
$total = $array[0]*$array[1];

您可以采用以下两种方法。如果您可以将逗号分隔符更改为 period/full 停止:

$data  = '10 x 2.5';
$floats = array_map('floatval', explode(' x ', $data));
echo $floats[0] * $floats[1];

演示:https://3v4l.org/hFMEt

或者您可以使用正则表达式,它也将确认您拥有正确的数据格式。

echo preg_replace_callback('/(\d+(?:[.,]\d+)?)\h*x\h*(\d+(?:[.,]\d+)?)/', function($match) {
    return str_replace(',' , '.', $match[1]) * str_replace(',' , '.', $match[2]);
    }, $data);

PHP 演示:https://3v4l.org/I82Gt
正则表达式演示:https://regex101.com/r/tTcJSp/1/

试试这个:

<?php
 $data  = '10 x 2,5';
 $array = explode("x", $data);
 $total = floatval(str_replace(',', '.', $array[0]))*floatval(str_replace(',', '.', $array[1])); 
?>

这里str_replace()用来检查是否有, 在字符串中,然后转换成它的浮点值。 希望这有帮助。

试试这个。只需将“,”替换为“。”它正在运行。

$data  = '10 x 2,5';
$data  = str_replace(',','.','10 x 2,5');
$array = explode("x", $data);
echo $total = $array[0]*$array[1];
$data  = '10 x 2,5';
$array = explode("x", $data);

$decimal =$array[1];

//replace the comma with dot
$decimal_formated = str_replace(',', '.', $decimal);
//format the string to float
$decimal_formated = (float)$decimal_formated;
//OR $decimal_formated = floatval($decimal_formated);

//get total
$total = $array[0]*$decimal_formated;

//french format $total, with comma
$total_with_comma =number_format($total, 1, ',', ' ');


echo $decimal.'</br>'; //output 2,5
echo $decimal_formated.'</br>'; //output 2.5
echo $total.'</br>'; //output 25
echo $total_with_comma.'</br>'; // output 25,0

您可以使用 number_format(), floatval().