Jessica Lingmn Jessica Lingmn - 5 months ago 7
PHP Question

Check if a string contain multiple specific words

How to check, if a string contain multiple specific words?

I can check single words using following code:

$data = "text text text text text text text bad text text naughty";
if (strpos($data, 'bad') !== false) {
echo 'true';
}


But, I want to add more words to check. Something like this:

$data = "text text text text text text text bad text text naughty";
if (strpos($data, 'bad || naughty') !== false) {
echo 'true';
}
?>


(if any of these words is found then it should return true)

But, above code does not work correctly. Any idea, what I'm doing wrong?

Answer

For this, you will need Regular Expressions and the preg_match function.

Something like:

if(preg_match('(bad|naughty)', $data)) { } 

The reason your attempt didn't work

Regular Expressions are parsed by the PHP regex engine. The problem with your syntax is that you used the || operator. This is not a regex operator, so it is counted as part of the string.

As correctly stated above, if it's counted as part of the string you're looking to match: 'bad || naughty' as a string, rather than an expression!