У меня две строки «Муреш» и «Марамуреш». Как я могу создать функцию поиска, которая, когда кто-то ищет Mures, вернет ему только сообщения, содержащие слово «Mures», а не ту, которая содержит слово «Maramures». Я пробовал strstr до сих пор, но теперь он работает.
Вы можете сделать это с помощью регулярного выражения и окружать слово с помощью границы слова \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». Легко реализовать и не нужно использовать какие-либо другие функции 🙂
Вы можете делать разные вещи:
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
.