Php check if string contains multiple words

17,667

Solution 1

use

substr_count

for an array use the following function

function substr_count_array( $haystack, $needle ) {
     $count = 0;
     foreach ($needle as $substring) {
          $count += substr_count( $haystack, $substring);
     }
     return $count;
}

Solution 2

You can use this code:

$bad_words = array("yo","hi");
$sentence = "yo you your";
// break your sentence into words first
preg_match_all('/\w+/', $sentence, $m);
echo ( array_diff ( $m[0], $bad_words ) === $m[0] ) ? "no bad words found\n" :
                                                      "bad words found\n";

Solution 3

// returns false or true
function multiStringTester($feed , $arrayTest)
{   
    $validator = false;
    for ($i = 0; $i < count($arrayTest); $i++) 
    {
            if (stringTester($feed, $arrayTest[$i]) === false ) 
            {   
                continue;
            } else 
            {
                $validator = true;              
            }       
    }
    return $validator;
}
//www.ffdigital.net
Share:
17,667
Frank
Author by

Frank

Updated on June 29, 2022

Comments

  • Frank
    Frank almost 2 years

    I have looked around the internet for something that will do this but it will only work with one word.

    I am trying to build a script that will detect a bad username for my site, the bad username will be detected if the username contains any of the words in an array.

    Here's the code I made, but failed to work.

    $bad_words = array("yo","hi");
    $sentence = "yo";
    
    if (strpos($bad_words,$sentence)==false) {
    echo "success";
    }
    

    If anybody could help me, I would appreciate it.