@posters

Как реализовать нестрогий поиск на php?

Есть ли способ без использования сложных библиотек, привязки к языку ввода и базам данных организовать примитивный нестрогий поиск?
На входе что-то вроде этого:
$myarray = ['лит', 'листья', 'Москва', 'листва', 'перелистнуть',];
$findme = 'лист';

а на выходе получаем что-то вроде:
Array
(
[0] => лист
[1] => листья
[2] => листва
[3] => перелистнуть
)
  • Вопрос задан
  • 264 просмотра
Решения вопроса 4
deepblack
@deepblack
$search_text = 'лист';

array_filter($array, function($el) use ($search_text) {
        return ( strpos($el['text'], $search_text) !== false );
    });


https://github.com/loilo/Fuse
spoiler
<?php
require_once 'vendor/autoload.php';

$fuse = new \Fuse\Fuse([
  [
    "title" => "Old Man's War",
    "author" => "John Scalzi"
  ],
  [
    "title" => "The Lock Artist",
    "author" => "Steve Hamilton"
  ],
  [
    "title" => "HTML5",
    "author" => "Remy Sharp"
  ],
  [
    "title" => "Right Ho Jeeves",
    "author" => "P.D Woodhouse"
  ],
], [
  "keys" => [ "title", "author" ],
]);

$fuse->search('hamil');

/*
Array
(
  [0] => Array
    (
      [title] => The Lock Artist
      [author] => Steve Hamilton
    )
  [1] => Array
    (
      [title] => HTML5
      [author] => Remy Sharp
    )
)
*/
Ответ написан
Комментировать
glaphire
@glaphire Куратор тега PHP
PHP developer
Можно пройтись foreach-ем по массиву и применить к каждому элементу stripos - если вернуло число, значит слово можно занести в массив результатов
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Добавлю свой вариант: gist
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы