代码之家  ›  专栏  ›  技术社区  ›  max

用explode php分隔字符串

  •  0
  • max  · 技术社区  · 7 年前

    explode 在PHP中,因为我需要分离字符串。这种类型:

    $Data = '10 x 4';
    

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

    $data  = '10 x 2,5';
    $array = explode("x", $data);
    $total = $array[0]*$array[1];
    
    4 回复  |  直到 7 年前
        1
  •  2
  •   chris85 Ferenc Kurucz    7 年前

    以下是两种方法。如果可以将逗号分隔符更改为句点/句号:

    $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/

        2
  •  1
  •   Priyank    7 年前

    试试这个。只需将“”替换为“”它正在工作。

    $data  = '10 x 2,5';
    $data  = str_replace(',','.','10 x 2,5');
    $array = explode("x", $data);
    echo $total = $array[0]*$array[1];
    
        3
  •  0
  •   Gopalkrishna Narayan Prabhu    7 年前

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

    在这里 str_replace() 用于检查是否存在 , 然后将其转换为浮点值。 希望这有帮助。

        4
  •  0
  •   Michael GEDION    7 年前
    $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()