[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разбор арифметического выражения(Калькулятор)
Traveller
Добрый день. Огромная просьба помочь с регулярками в арифметике...пишу калькулятор. Юзер может вводить числа(через инпуты клацая по ним), + - * /, в любом колличестве, например (123/76+23-7*8...), после нажатия равно, выражение сохраняется в строку....как это вычислить ?
З.Ы. Прошу откликнуться как можно быстрее..срочно надо.



Спустя 4 минуты, 32 секунды (27.11.2011 - 12:28) Семён написал(а):
А скобки будут в выражении?

Спустя 48 секунд (27.11.2011 - 12:28) Traveller написал(а):
нет

Спустя 2 минуты, 57 секунд (27.11.2011 - 12:31) Nikitian написал(а):
Использовать eval() для рассчёта.

Спустя 1 минута, 46 секунд (27.11.2011 - 12:33) Traveller написал(а):
насколько я понмю, eval просто пристыковывает одну строку к другой...

Спустя 8 минут, 32 секунды (27.11.2011 - 12:42) Traveller написал(а):
например в $_POST['display'] находится 90*5-9/9


if (preg_match("/=/",$_POST['button']))
{
$display=$_POST['display'];
eval("\$result = \"$display";");
echo $result;

}


Ошибка будет

Спустя 4 минуты, 42 секунды (27.11.2011 - 12:46) Семён написал(а):
Если хорошо отфильтруете входящие данные, то вариант Nikitian будет самым лучшим.
выглядит это так:
eval("return 2+2*4-5");


При этом вероятность взлома вашего проекта, будет достаточно высокой.

Спустя 7 минут, 23 секунды (27.11.2011 - 12:54) Traveller написал(а):
никогда еще не доводилось с eval сталкиваться, так что простите за глупые вопросы, но

$display=$_POST['display'];
eval("return $display");
echo $display;

не желает работать

Спустя 1 минута, 45 секунд (27.11.2011 - 12:56) Invis1ble написал(а):
Я наверное туплю с утра, а что, если просто через echo вывести выражение - не сработает?

Спустя 39 секунд (27.11.2011 - 12:56) Семён написал(а):
eval("return ".$display.";");

Мозгами пошевели, прочти смысл и назначение функции eval

Invis1ble
Через echo будет выведен текст.

Спустя 2 минуты, 13 секунд (27.11.2011 - 12:58) Invis1ble написал(а):
точно туплю smile.gif

Спустя 28 секунд (27.11.2011 - 12:59) Семён написал(а):
Если у тебя мозгов не хватает что результат eval нужно присвоить какойто переменной, то с моей стороны говорить о безопасности и фильтрации данных вообще глупо, забудь эту функцию и ищи альтернативы, иначе твой проект хакнут на след. день.

Спустя 2 минуты, 2 секунды (27.11.2011 - 13:01) Traveller написал(а):
пытался так сделать, в результате парс эррор..Parse error: syntax error, unexpected ';'

Спустя 1 минута, 30 секунд (27.11.2011 - 13:02) Семён написал(а):
Uncomments, играть в найди 1 отличие не собираюсь.
eval("return $display");
eval("return ".$display.";");

Спустя 44 секунды (27.11.2011 - 13:03) Traveller написал(а):
знаю...чтож спасибо большое и на этом

Спустя 1 минута, 18 секунд (27.11.2011 - 13:04) Traveller написал(а):
нашел ошибку, но все равно выводит просто строку...а не результат

Спустя 1 минута, 11 секунд (27.11.2011 - 13:06) Семён написал(а):
Попробуй этот пример:
        $string = "2+2/4";
echo eval("return ".$string . ";");

Если это заработает, вправь себе там всё нужно))

Спустя 2 минуты, 39 секунд (27.11.2011 - 13:08) Traveller написал(а):
Разобрался) Премного благодарен

Спустя 1 минута, 15 секунд (27.11.2011 - 13:10) Семён написал(а):
Слава богам!!! dry.gif

Спустя 6 минут, 11 секунд (27.11.2011 - 13:16) Traveller написал(а):
да ладно ))) я ж только пару месяцев учу

Спустя 6 дней, 6 часов, 11 минут, 42 секунды (3.12.2011 - 19:27) Guest написал(а):
подскажите пожалуйста что не так, нужно вычесть корень

...
$kordec=sqrt($deck);
...
пишу так пишет NAN если место $deck ставлю число то может вычесть, может с типом не то что-то если так то какой сделать?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.