Как convert 1/4 to 0.25
в PHP.
В форму вставляю номер как 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
Пожалуйста помоги..
Вы можете использовать такую функцию:
<?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
Один из возможных способов заключается в следующем:
на странице действий сначала взорвите введенное значение, например:
$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: Просто для удовольствия, я сделал версию для вашего кода только с 1 вводом
//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
Ну, вы можете использовать Eval здесь, но будьте осторожны! Непосредственный анализ содержимого $ _POST в eval делает ваш сценарий чрезвычайно опасным для вашего веб-сервера, если вы не экранировали ввод правильно!
Если вы уверены, что получите что-то вроде 1/4 или 1/2, это сделает это:
echo eval("return ".$_POST['a'].";");
но, как я уже сказал. БУДЬТЕ ОСТОРОЖНЫ С ЭТИМ
если кто-то хочет что-то плохое, он может просто войти exec('init 0')
на ваш вход, и ваш сервер отключится, если ваш веб-сервер получил разрешение на это (это лишь одна из бесчисленных уязвимостей для незащищенного eval), поэтому я прошу вас быть терпеливым с этим.
Второй способ — разделить ваши числа и разделить их. Но это наверняка будет иметь много проблем с форматированием.
Привет