How do I check if a string contains a specific word?

Charles Yeung picture Charles Yeung · Dec 6, 2010 · Viewed 5.4M times · Source

Consider:

$a = 'How are you?';

if ($a contains 'are')
    echo 'true';

Suppose I have the code above, what is the correct way to write the statement if ($a contains 'are')?

Answer

codaddict picture codaddict · Dec 6, 2010

You can use the strpos() function which is used to find the occurrence of one string inside another one:

$a = 'How are you?';

if (strpos($a, 'are') !== false) {
    echo 'true';
}

Note that the use of !== false is deliberate (neither != false nor === true will return the desired result); strpos() returns either the offset at which the needle string begins in the haystack string, or the boolean false if the needle isn't found. Since 0 is a valid offset and 0 is "falsey", we can't use simpler constructs like !strpos($a, 'are').

Edit:

Now with PHP 8 you can do this:

if (str_contains('How are you', 'are')) { 
    echo 'true';
}

RFC

str_contains