Зеркальная функциональность SQL как LIKE для массива PHP? - PullRequest
1 голос
/ 13 октября 2009

В данный момент у меня есть страница с AJAX-скриптом, который ищет в базе данных LIKE "% search term from input box%".

Мне нужно изменить его так, чтобы вместо поиска в базе данных он выполнял поиск в массиве (который был создан из двух таблиц - я не могу использовать JOIN, потому что в нем есть нечто большее).

Как мне создать нечеткую функцию поиска в PHP, которая будет возвращать все возможные совпадения из массива?

Ответы [ 2 ]

8 голосов
/ 13 октября 2009

вы хотите preg_grep

, например

$arr = array("tom jones", "tom smith", "bob jones", "jon smith");
$results = preg_grep("/jones/",$arr);

$results теперь будет содержать два элемента, "tom jones" и "bob jones"

2 голосов
/ 13 октября 2009

Вы можете просто зациклить массив и использовать strpos, чтобы найти подходящие элементы

foreach( $arr as $value ) {
   if ( strpos($value, 'searchterm') !== FALSE ) {
      // Match
   }
}

Вы можете использовать регулярное выражение для более сложного поиска, но strpos будет быстрее, если вы просто попытаетесь выполнить простой поиск типа LIKE '% term%'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...