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

Псевдокод

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

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

Ответ 1

У вас есть несколько вариантов в зависимости от ваших потребностей. Для этого простого примера 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;
}

Ответ 2

использование:

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

или

return (stripos($text,$word) !== false); //case-insensitive

Ответ 3

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

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

  • "Слушай меня"
  • "Луне"
  • "сиюминутный"

но не:

  • "Вместе"
  • "В пространство"

Ответ 4

strpos

<?php
$text = "I go to school";
$word = "to"
$pos = strpos($text, $word);

if ($pos === false) {
    return false;
} else {
    return true;
}
?>

Ответ 6

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

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

Ответ 7

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

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

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

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

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

strpbrk - Поиск строки для любого из набора символов

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

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

Ответ 8

@mrclay

cant 'мы просто делаем

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

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

Ответ 9

После многократного поиска подходящей версии 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.";

Ответ 10

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

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