Вставьте другой «клей» на функцию взрыва на основе значения preg_match

Я выполняю поисковый запрос с помощью MATCH и AGAINST в булевом режиме, и у меня есть ключевые слова, хранящиеся в ARRAY, чтобы показать, что они похожи на TAGS, когда я отображаю значения массива для построения оператора запроса, он работает нормально, но я хочу Сохраните БОЛЕЙСКУЮ функциональность поиска, например, «точное совпадение» или другие специальные символы.

Можно ли вставить кавычки, когда значение массива идет с пробелами?

INPUT: keyword1 keyword2 "exact match" keyword3

Covert to this array:
$keywords = array(
[0] = "keyword1",
[1] = "keyword2",
[2] = "exact match", <-- This came with quotes so is stored as a phrase
[3] = "keyword3");

Затем мне нужно преобразовать в оператор SQL с Implode:

$SQL  = "SELEC field WHERE MATCH(keywords) AGAINST('";
$SQL .= implode(" ", $keywords);
$SQL .= "' IN BOOLEAN MODE)";

Я пытаюсь использовать ARRAY_FILTER (), но он различает только одно вместо другого:

function words($var){
return preg_match('/\s/', $var);
}

$SQL  = "SELEC field WHERE MATCH(keywords) AGAINST('";
$SQL .= implode(" ", array_filter($keywords, 'words'));
$SQL .= "' IN BOOLEAN MODE)";

//example above only outputs: exact match

Моя цель состоит в том, чтобы различать значение массива, когда значение содержит более двух слов, функция добавляет к значению кавычки

Expected Output:

$SQL = "SELECT field WHERE MATCH(keywords) AGAINST('keyword1 keyword2 "exact match" keyword3' IN BOOLEAN MODE)";

Большое спасибо за вашу помощь

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector