如何在 PHP 中convert 1/4 to 0.25
。
在表格中,我将号码插入1/4
。在action page
中,我将post变量设为1/4
。
如何将其转换为0.25
。我认为在行动页面中,这是以字符串形式获得的。这就是为什么它显示为1/4
。但我需要0.25.
我该怎么做?
主页
<input type="text" name="a" id="a">
行动页
$a = $_POST['a'];
echo $a; //gives 1/4 but need 0.25
请帮助..
答案 0 :(得分:1)
一种可能的方式是:
在操作页面中,首先展开输入的值,如:
$explode = explode('/', $_POST['a']);
然后你只需要分开它们:D
$result = $explode[0] / $explode[1];
echo $result; //echoes 0.25
L.E:在我看来,这样做的最佳方法是使用3个输入。一个带有第一个数字,一个带有操作,一个带有第二个数字。在这种情况下,您可以制作一个真实的计算器并在操作页面中执行正常操作,如下所示:
显示页面中的:
<input type="text" name="first_no" id="first_no">
<input type="text" name="operation" id="operation">
<input type="text" name="second_no" id="second_no">
在行动页面中:
switch($_POST['operation']) {
case '+';
$result = $_POST['first_no'] + $_POST['second_no'];
break;
case '-';
$result = $_POST['first_no'] - $_POST['second_no'];
break;
case '*';
$result = $_POST['first_no'] * $_POST['second_no'];
break;
case '/';
$result = $_POST['first_no'] / $_POST['second_no'];
break;
//and so on... if you need more
}
echo $result;
L.E2:为了好玩,我只用了一个输入为你的代码制作了一个版本
//get index
preg_match("/\D/is", $_POST['a'], $mList, PREG_OFFSET_CAPTURE);
$index = $mList[0][1];
//get operation
$operation = substr($string, $index, 1);
//get numbers
$explode = explode($operation, $string);
//produce result
switch($operation) {
case '+';
$result = $explode[0] + $explode[1];
break;
case '-';
$result = $explode[0] - $explode[1];
break;
case '*';
$result = $explode[0] * $explode[1];
break;
case '/';
$result = $explode[0] / $explode[1];
break;
//and so on... if you need more
}
echo $result;
希望这会有所帮助:D
答案 1 :(得分:0)
您可以使用以下功能:
<?php
function calculate_string( $mathString ) {
$mathString = trim($mathString);
$mathString = str_replace ('[^0-9\+-\*\/\(\) ]', '', $mathString);
$compute = create_function("", "return (" . $mathString . ");" );
return 0 + $compute();
}
echo calculate_string("1/4");
?>
输出:
0.25
答案 2 :(得分:-1)
你可以在这里使用eval但要小心!如果你没有正确地转义输入,直接将$ _POST东西解析为eval会使你的脚本对你的web服务器非常危险!
如果你确定你会得到1/4或1/2这样的东西,那就可以了:
echo eval("return ".$_POST['a'].";");
但正如我所说。小心这一点
如果有人想要一些不好的东西,他可以在您的输入中输入exec('init 0')
,如果您的网络服务器获得了执行此操作的许可,您的服务器将会关闭(这只是对无担保评估的无数漏洞之一)所以我请你成为耐心的。
第二种方法是分割你的数字并将它们分开。但这肯定会有很多格式问题。
问候