Как проверить, содержится ли слово в другой строке с помощью PHP?

Псевдокод

text = "I go to school"; word = "to" if ( word.exist(text) ) { return true ; else { return false ; } 

Я ищу функцию PHP, которая возвращает true, если слово существует в тексте.

У вас есть несколько вариантов в зависимости от ваших потребностей. Для этого простого примера strpos() , вероятно, является самой простой и самой прямой функцией для использования. Если вам нужно что-то сделать с результатом, вы можете предпочесть strstr() или preg_match() . Если вам нужно использовать сложный шаблон вместо строки в качестве вашей иглы, вам понадобится preg_match() .

 $needle = "to"; $haystack = "I go to school"; 

strpos () и stripos () (stripos () нечувствителен к регистру):

 if (strpos($haystack, $needle) !== false) echo "Found!"; 

strstr () и stristr () (stristr нечувствителен к регистру):

 if (strstr($haystack, $needle)) echo "Found!"; 

preg_match (регулярные выражения, гораздо более гибкие, но медленнее):

 if (preg_match("/to/", $haystack)) echo "Found!"; 

Поскольку вы попросили выполнить полную функцию, так вы комбинируете это (со значениями по умолчанию для иглы и стога сена):

 function match_my_string($needle = 'to', $haystack = 'I go to school') { if (strpos($haystack, $needle) !== false) return true; else return false; } 

использовать:

 return (strpos($text,$word) !== false); //case-sensitive 

или

 return (stripos($text,$word) !== false); //case-insensitive 
 function hasWord($word, $txt) { $patt = "/(?:^|[^a-zA-Z])" . preg_quote($word, '/') . "(?:$|[^a-zA-Z])/i"; return preg_match($patt, $txt); } 

Если $ word «to», это будет соответствовать:

  • "Послушай меня"
  • "На Луну"
  • «Сиюминутный»

но нет:

  • "Вместе"
  • "В космос"

StrPos

 <?php $text = "I go to school"; $word = "to" $pos = strpos($text, $word); if ($pos === false) { return false; } else { return true; } ?> 
 $text="I go to school"; return (strpos($text, 'to')!== false); 

На странице руководства вам нужно найти правильное использование strpos

Другой способ (помимо приведенных примеров strpos – использовать функцию strstr)

 if (strstr($haystack, $needle)) { return true; } else { return false; } 

Вы можете использовать эти строковые функции,

strstr – найти первое вхождение строки

stristr – нечувствительность к регистру strstr ()

strrchr – найти последнее вхождение символа в строке

strpos – Найти позицию первого вхождения подстроки в строке

strpbrk – поиск строки для любого набора символов

Если это не поможет, вы должны использовать регулярное выражение preg

preg_match – выполнить регулярное выражение

@mrclay

не можем "мы просто делаем

 "/(?:^|\w+)" . preg_quote($word, '/') . "(?:$|\w+)/i" 

так что он либо проверяет запуск, либо пробел, и конец или пробел.

После много раз поиска подходящей версии php я решил написать свою собственную функцию contains (с несколькими иглами параметров) и хорошо запомнить.

 function contains($str,$contain) { if(stripos($contain,"|") !== false) { $s = preg_split('/[|]+/i',$contain); $len = sizeof($s); for($i=0;$i < $len;$i++) { if(stripos($str,$s[$i]) !== false) { return(true); } } } if(stripos($str,$contain) !== false) { return(true); } return(false); } 

Описание php содержит:

 contains($str,$arg) $str: The string to be searched $arg: The needle, more arguments divided by '|' 

Примеры:

 $str = 'green house'; if(contains($str,"green")) echo "we have a green house."; else echo "our house isn't green"; $str = 'green, blue, red houses'; if(contains($str,"green|red")) echo "we have a green or red house."; else echo "we have a blue house."; 

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

 $text = "I go to school"; $word = "to" if (strpos($text,$word)) { echo 'true'; }