Автор Тема: [!] Проверка логического выражения  (Прочитано 3813 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
[!] Проверка логического выражения
« : 02 Декабря 2002, 12:58:46 »
Кто нибудь подскажет как лучше организовать проверку логического выражения составленого по правилам PHP??? То что у меня сейчас есть проверкой назвать очень сложно...:(
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
[!] Проверка логического выражения
« Ответ #1 : 02 Декабря 2002, 13:00:56 »
Чего?
И чего у тебя сейчас?
Что значит по правилам РНР?
А это сильно отличается от правил формальной логики?
AS IS...

Оффлайн Oak

  • Дерево
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1481
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
[!] Проверка логического выражения
« Ответ #2 : 02 Декабря 2002, 14:02:35 »
eval ?
[основной броузер - SeaMonkey] Netscape Communicator 4 - is the best :) // see sources

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
[!] Проверка логического выражения
« Ответ #3 : 02 Декабря 2002, 15:00:07 »
Прошу прошения! Ужасно сформулировал вопрос.
Есть строка, например: "($var1 < 0 or $var2 > 1000 ) && sizeof($array) != 0"
Надо проверить является ли она синтаксически верной с точки зрения PHP. И если там есть синтаксические ошибки то хотябы примерно указать на них.
Какие будут мнения?
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Oak

  • Дерево
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1481
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
[!] Проверка логического выражения
« Ответ #4 : 02 Декабря 2002, 16:04:33 »
RTFM eval :)

[off]
поскольку вопрос ! - то я не вдаюсь в подробности
[/off]
[основной броузер - SeaMonkey] Netscape Communicator 4 - is the best :) // see sources

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
[!] Проверка логического выражения
« Ответ #5 : 02 Декабря 2002, 16:38:38 »
Вот есть один вариант:

$str
="Логическое выражение";
ob_start();
eval(
"if(".$str.") echo \'Ok\'; ");
$ob=ob_get_contents();
ob_end_clean();

// Дальше парсим переменную $ob

Спасибо Oak, я думал что warning в коде eval`a остановит выполнение самого скрипта, оказывается что нет.;)
Как вариант можно было парсить логическое выражение самому, по символьно, но это ТАКОЙ ГЕМОРРОЙ...
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
[!] Проверка логического выражения
« Ответ #6 : 02 Декабря 2002, 16:44:02 »
Цитировать
RTFM eval
[OFF]Oak я знаю что это за функция. И изначально даже хотел воспользоваться ей, но меня напугали возможные "не нужные" сообщения об ошибках (например "Undefined varible"), не додумав этот вариант я "отложил его в сторону".[/OFF]
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
[!] Проверка логического выражения
« Ответ #7 : 02 Декабря 2002, 16:59:02 »
Tronyx
А ты перед eval "@" поставь
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Oak

  • Дерево
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1481
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
[!] Проверка логического выражения
« Ответ #8 : 02 Декабря 2002, 17:26:37 »
Ага  + там можно перенаправить эти сообщения в строковую переменную и выдавать их как тебе хочется.
Т.е то что ты спрашивал

 See - Error Handling

:)
[основной броузер - SeaMonkey] Netscape Communicator 4 - is the best :) // see sources

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
[!] Проверка логического выражения
« Ответ #9 : 02 Декабря 2002, 18:14:32 »
Цитировать
А ты перед eval "@" поставь

Не подходит под условие задачи:;)
Цитировать
И если там есть синтаксические ошибки то хотябы примерно указать на них.


Цитировать
See - Error Handling

Тоже не подходит... я пишу компилятор шаблонов, он будет распространятся бесплатно, следовательно расчитан на массы, а у многих обработчик ошибок уже определён и переопределять его на свой нельзя. Тем более не чего трудного нет в вырезании текста ошибки из переменной. :)
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
[!] Проверка логического выражения
« Ответ #10 : 02 Декабря 2002, 19:02:08 »
Цитировать
переопределять его на свой нельзя

ээээ.....

Цитировать
(PHP 4 >= 4.0.1)

set_error_handler --  Sets a user-defined error handler function.
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Oak

  • Дерево
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1481
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
[!] Проверка логического выражения
« Ответ #11 : 02 Декабря 2002, 19:38:11 »
track_errors  boolean

    If enabled, the last error message will always be present in the global variable $php_errormsg.
[основной броузер - SeaMonkey] Netscape Communicator 4 - is the best :) // see sources

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
[!] Проверка логического выражения
« Ответ #12 : 02 Декабря 2002, 20:33:38 »
Цитировать
track_errors boolean

Спасибо за помощь, но меня вполне устраивает ob_*(); для перехвата ошибок.
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
[!] Проверка логического выражения
« Ответ #13 : 03 Декабря 2002, 12:52:33 »
Tronyx
Как смысл обрабатывать ошибки 2 раза:
1)пихание в буфер
2)обрабатывать этот буфер какой-нить регуляркой
Если set_error_handler делает все одним скопом
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28