Поиск по строке в php

211
10 декабря 2016, 10:11

Нужно осуществить поиск по строке формата:

$string = "Lorem ipsum dolor sit amet";

Человек вводит в поиск "sit ipsum amet". Можно ли проверить строку на наличие этих символов в строке, не в прямом порядке ?

В php есть стандартные методы для поиска по строке, например stristr(), но он сработает, только если в точном порядке дать ему данные, а мне нужно просто что-то, что найдёт совпадение в строке и запросе.

Как это можно реализовать?

Answer 1

Попробуй вот этот код. В основ используеться array_intersect()

$string = "Lorem ipsum dolor sit amet";
$haystack = "sit ipsum amet";
$stringInArray = explode(' ', $string);
$haystackInArray = explode(' ', $haystack);
if(count(array_intersect($haystackInArray, $stringInArray)) == count($haystackInArray)) {
// Слова из строки найдены
}
Answer 2

Основная идея - разбиваем обе строки (целевую и искомую)на слова. А затем циклом пробегаем по массиву искомых слов и ищем каждое слово в массиве целевых слов

function mixed_search($haystack, $needle) {
  $haystack_words = explode(' ', $haystack);
  $needle_words = explode(' ', $needle);
  foreach ($needle_words as $word) {
    if (array_search($word, $haystack_words) === false)
      return false;
  }
  return true;
}
$string = "Lorem ipsum dolor sit amet";
$search = "sit ipsum amet";
echo mixed_search($string, $search);
READ ALSO
Pubnub утечка памяти

Pubnub утечка памяти

Здравствуйте! Подскажие, из-за чего происходит утечка памяти?

262
Парсинг JSON, возвращаемый php в java android

Парсинг JSON, возвращаемый php в java android

Привет, у меня есть php, который мне json'ом возвращает несколько значений:

341
Action для form на PHP

Action для form на PHP

Есть форма отзыва с простой каптчей

249
PostgreSQL + XAMPP + yii2, Database Exception

PostgreSQL + XAMPP + yii2, Database Exception

Соединил XAMPP, yii и postgreSQLСоздал элементарную бд, схему, 1 таблицу, в таблице 3 столбца: id_point (key,integer, это наш айдишник), title(text), point_xy(point)

241