@posters

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

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

а на выходе получаем что-то вроде:
Array
(
[0] => лист
[1] => листья
[2] => листва
[3] => перелистнуть
)
  • Вопрос задан
  • 196 просмотров
Решения вопроса 4
Andrew_Pinkerton
@Andrew_Pinkerton
$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
    )
)
*/
Ответ написан
alexey_bille
@alexey_bille
Web developer
glaphire
@glaphire
PHP developer
Можно пройтись foreach-ем по массиву и применить к каждому элементу stripos - если вернуло число, значит слово можно занести в массив результатов
Ответ написан
xmoonlight
@xmoonlight Куратор тега PHP
https://sitecoder.blogspot.com
Добавлю свой вариант: gist
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Vigrom Воронеж
До 150 000 руб.
Vigrom Самара
До 150 000 руб.
Vigrom Москва
До 150 000 руб.
17 окт. 2019, в 03:16
37500 руб./за проект
16 окт. 2019, в 22:58
3200 руб./за проект
16 окт. 2019, в 22:43
3000 руб./за проект