Как манипулировать и проверять строку, содержащую условия, которые будут оцениваться php

Часть программы, которую я создаю, состоит из пользователя, создающего условия, которые я буду хранить в базе данных mysql. Я хочу, чтобы синтаксис был несколько проще, чем то, что позволяет php, но так как это в конечном счете будет запущено как php-код, используя eval (), он должен иметь действительный синтаксис.

Например:

Вход пользователя:

4<var1<=9 AND var2<6 

Результат должен быть:

 4<var1 AND var1<=9 AND var2<6 

Перед этим eval'd я окружаю его с помощью оператора if, который просто возвращает true.

Что было бы хорошим способом обнаружить и разделить это сравнение?

Кроме того, как я могу проверить, что полученный код не вызовет каких-либо ошибок php, чтобы, если я могу проинформировать пользователя?

Изменить. Чтобы быть ясными, эти условия могут быть любыми стандартными условиями, такими как>, <,> =, <=, ==.

Даже более удобный подход будет интерфейсом, как говорит Треффиннон, первоначальный подход к синтаксическому анализу строки:

  1. split string пробелами (требуются пробелы)
  2. пересечь результирующий массив
  3. элементы, которые не содержат И ИЛИ ИЛИ являются условиями, разделяют их на любой из логических операторов (>,>,> =, <=, ==,! =)
  4. Теперь вы все разобрали синтакс, он готов к интерпретации.

Это был бы пример (не тестировался, считал его псевдокодом) $ tokens = explode ('', $ user_string);

 $to_evaluate = array(); foreach( $tokens AS $tok ) { if( $tok!='AND' && $tok!='OR' ) { $parts = preg_split("/(<|>|<=|>=|==|!=)+/", $tok); if( count($parts)==3 ) { $to_evaluate[] = array( 'element1'=>$parts[0], 'condition'=>$parts[1], 'element2'=>$parts[2] ); } else echo "¿Error?"; } else $to_evaluate[] = $tok; } 

На этом этапе вы должны пройти $ to_evaluate и начать оценивать каждое найденное условие.