用 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];
或者您可以使用正则表达式,它也将确认您拥有正确的数据格式。
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().
我在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];
或者您可以使用正则表达式,它也将确认您拥有正确的数据格式。
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().