2017-08-16 3 views
0

私は文字列を分離する必要があるので、私はexplodeをPHPで使用しています。PHPを分解する別の文字列

$Data = '10 x 4'; 

数値を分離する必要があるのは、それらの数値演算を行うためです。私が持っているコードは、整数のときにうまく機能します。このタイプの文字列が10 x 2.5の場合は、, 5の小数部分は考慮されません。この部分も考慮に入れるにはどうすればいいですか?

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

'、'のフィールドのみ – max

+0

関連するページ/回答である可能性があります。https://stackoverflow.com/a/44987003/2943403 – mickmackusa

答えて

1

これで試してみてください。単に "、"を "と置き換えてください。"それは働いています。

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

この答えは、小数点が '、'または '。'で区切られている場合は非常に正しいです。ありがとうございます – max

+0

これはまた、最初の位置に10進数の東の場合にも機能しますか?たとえば、 '7.5 x 10'または両方 '7.5 x 7.5' – max

2

ここでは2つの方法があります。あなたは、期間/完全に停止にカンマ区切りを変更することができる場合:

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

0

はこれを試してみてください。

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

ここstr_replace(), が文字列であるかどうかを確認して、そのに変換するために使用されます浮動小数点値。 これが役立つことを願っています。

+0

'$ data'で' str_replace'を使用すると、 '$ array'に' floatval'をマップすることができます。 (https://3v4l.org/nj1hi) – chris85

+0

@ chris85それは本当です。なぜなら、$データには '、'があり、 'x 'が必要な最初のものであるという爆発的な理由が考えられるからです。ありがとうございました。 –

0
$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()を使用することができます。

関連する問題