電子書籍の厳選無料作品が豊富!

PHP5で数値の文字列から数値にする方法で質問です。

数値と認識されるものについては、そのまま、およびキャストするだけでそのまま使えると思いますが、
割り算(「/(スラッシュ)」)が入っているような計算式を数値として認識させる方法はありますでしょうか?

例えば

$a="6861/2500";
echo (float)$a;
echo "<br>";

とすると、先頭の6861という数値に変換されます。

if(is_numeric($a)){
echo "数値";
}else{
echo "文字";
}

の結果は文字という判定になりました。

6861/2500

2.7444

と取得したいです。

自分で計算記号から数値部分を区切って計算するような方法をとらないと難しいでしょうか?

A 回答 (2件)

evalを使うならこんな感じの方がよいかも



<?PHP
$a = "6861/2500";
$b=eval("return ".$a.";");
print $b;
?>

データを検証するならこんな感じ?

<?PHP
$pattern="/^\s*(\d+)(\s*[\/*+-]\s*(\d+))+\s*$/";
$a="1+2 / 3-4 *5";
$b=0;
if(preg_match($pattern,$a)) $b=eval("return ".$a.";");
print $b;
?>
    • good
    • 0

evalを使うことで実現できます。


http://php.net/manual/ja/function.eval.php

$a = "6861/2500";
eval('$result='.$a.';'); //「$result=6861/2500;」というコードを実行
echo $result;

マニュアルページにもありますが、
ユーザの入力をそのままevalに渡すことは危険ですので絶対に避けてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!