2010-10-05 3 views
1

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

В других словах, термин поиска отвертка молоток может дать массив [ «отвертки», «молот»], но «простак screedriver» Молоток может дать [ «шлицевая отвертка», «молоток»] ,

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

+1

Что вы делаете с этими ключевыми словами? Вы передаете их на mySQL? –

+1

Возможный дубликат: http://stackoverflow.com/questions/3811519 – Gumbo

+0

Я собираюсь перевести их в запрос базы данных MSSQL (TSQL). И я не дублирую. Но спасибо за полезную ссылку :), если бы вы опубликовали это как ответ, вы бы выиграли. Уже реализовано. – Dutchie432

ответ

1

Попробуйте использовать preg_split

Что-то вроде:

/* $search_term: 
* "flathead screwdriver" hammer -nails 
*/ 

$terms = preg_split("/[\s]*\\\"([^\\\"]+)\\\"[\s]*|[\s]+/", $search_term); 

/* $terms = array(
*  0 => "flathead screwdriver" 
*  1 => "hammer" 
*  2 => "-nails" 
*/ 

$exclude = array(); 

foreach($terms as $term){ 
    if(strpos($term, '-') == 0) 
     array_push($exclude, substr($term, 1)); 
} 

/* $exclude = array(
*  0 => "nails" 
*/ 

Единственное, что я не включил это удаление "гвозди" из массива $ терминам. Я оставляю это в качестве упражнения для читателя =)

 Смежные вопросы

  • Нет связанных вопросов^_^