Я пытаюсь создать строку логического поиска в PHP для создания предложения MSSQL WHERE.
У меня есть строка, которая была введена в поле поиска:
Управляющий И Директор ИЛИ «Офисный Администратор» НЕ Глобальный ИЛИ «ИТ Временное Управление»
Затем я чищу строку и взрываюсь:
$searchText = preg_replace('/(&|\||-|!)(\S+)/imx', '$1 $2', $SampleSearch);
$keywords = explode(' ', $searchText);
Я играл с рядом примеров, чтобы создать предложение Where, но я действительно изо всех сил. Пока я нашел ниже, но не могу заставить его создать. Я перепробовал ряд изменений, но все так же.
$newKeyWords = array();
$string = '';
$counter = 1;
foreach( $keywords as $keyName){
if( $keyName !== 'AND' && $keyName !== 'OR' && $keyName !== 'NOT'){
$string .= ' '.$keyName;
if( $counter == count($keywords) ){
$newKeyWords[] = trim($string);
}
}else{
$newKeyWords[] = trim($string);
$newKeyWords[] = $keyName;
$string = '';
}
$counter++;
}
Я думаю, что условие Where должно выглядеть следующим образом:
WHERE (((Position LIKE '%Managing%') AND (Position LIKE '%Director%')) OR ((Position LIKE '%Office Admin%'))) AND NOT ((Position LIKE '%Global%') OR (Position LIKE '%Interim Managing%'))
Задача ещё не решена.
Других решений пока нет …