Найти точную строку внутри строки

У меня две строки «Муреш» и «Марамуреш». Как я могу создать функцию поиска, которая, когда кто-то ищет Mures, вернет ему только сообщения, содержащие слово «Mures», а не ту, которая содержит слово «Maramures». Я пробовал strstr до сих пор, но теперь он работает.

Solutions Collecting From Web of "Найти точную строку внутри строки"

Вы можете сделать это с помощью регулярного выражения и окружать слово с помощью границы слова \b

preg_match("~\bMures\b~",$string)

пример:

 $string = 'Maramures'; if ( preg_match("~\bMures\b~",$string) ) echo "matched"; else echo "no match"; 

Использовать функцию preg_match

 if (preg_match("/\bMures\b/i", $string)) { echo "OK."; } else { echo "KO."; } 

Как вы проверяете результат strstr? Попробуйте здесь:

 $string = 'Maramures'; $search = 'Mures'; $contains = strstr(strtolower($string), strtolower($search)) !== false; 

Может быть, это глупое решение, и есть лучший. Но вы можете добавлять пробелы к исходной и целевой строкам в начале и конце строк, а затем искать «Mures». Легко реализовать и не нужно использовать какие-либо другие функции 🙂

Вы можете делать разные вещи:

  • поиск «Mures» (пробелы вокруг)
  • поиск чувствителен к регистру (так что «mures» будет найден в «Maramures», но «Mures» не будет)
  • используйте регулярное выражение для поиска в строке («граница слова + Mures + граница слова»). Посмотрите также: Php найти строку с регулярным выражением
 function containsString($needle, $tag_array){ foreach($tag_array as $tag){ if(strpos($tag,$needle) !== False){ echo $tag . " contains the string " . $needle . "<br />"; } else { echo $tag . " does not contain the string " . $needle; } } } $tag_array = ['Mures','Maramures']; $needle = 'Mures'; containsString($needle, $tag_array); 

Функция вроде этого будет работать … Не может быть такой сексуальной, как preg_match .