Обнаружение последовательностей операторов ИЛИ и заключение их содержимого в круглые скобки при построении запроса с помPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Обнаружение последовательностей операторов ИЛИ и заключение их содержимого в круглые скобки при построении запроса с пом

Сообщение Anonymous »

Я создал следующий PHP-код для создания запроса на основе пользовательского ввода, где они могут выбирать условие и оператор, и результирующий запрос будет печататься на их экране каждый раз, когда они что-то добавляют к запросу:

Код: Выделить всё

if (!isset($_SESSION['filter_'.$c])) { // if its the first filter inserted
if ($operator == "NOT") {
@$_SESSION['query_first_'.$c] = "NOT $selected_condition";
} else {
@$_SESSION['query_first_'.$c] = "$selected_condition";
}
}

if ($operator == "OR" || $operator == 'OR NOT' || $operator == 'AND' || $operator == 'AND NOT') {
@$current_filter = "$operator $selected_condition";
@$_SESSION['query_'.$c] = " " . @$_SESSION['query_'.$c] . @$current_filter;
}

@$write_first = $_SESSION['query_first_'.$c];
@$write_last = $_SESSION['query_'.$c];

$_SESSION['filter_'.$c] = @$write_first . @$write_last;
Это функция, которая вызывается всякий раз, когда пользователь добавляет другое условие, сохраняя переменные сеанса между вызовами.
выход будет выглядеть примерно так:

Код: Выделить всё

WHERE condition AND condition OR NOT condition AND condition OR condition OR condition
Итак, я хотел добавить круглые скобки вокруг частей OR.

Код: Выделить всё

WHERE condition AND (condition OR NOT condition) AND (condition OR condition OR condition)
Последнее решение, о котором я подумал, заключалось бы в заключении всех вхождений в круглые скобки в конце, а затем, когда функция будет вызвана, она удалит все круглые скобки, чтобы не будет дубликатов.
Из-за моих ограниченных знаний Regex мне удалось придумать только это:

Код: Выделить всё

(?

Подробнее здесь: [url]https://stackoverflow.com/questions/78794915/detecting-or-operator-sequences-and-wrapping-their-content-in-a-parenthesis-when[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»