user2334436
user2334436

Reputation: 939

Checking if a list of words exisit in a string

Hi I'm trying to check if a list of words (or any one of them) exists in a string. I tried some of the examples i found here, but i still can't get it to work correctly.

Any ideas what I'm doing wrong?

$ss3="How to make a book";
    $words = array ("book","paper","page","sheet");
    if (in_array($ss3, $words) )
{
    echo "found it"; 
}

Upvotes: 0

Views: 111

Answers (7)

Armen
Armen

Reputation: 4202

You need to explode() your $ss3 string and then compare each item with your $words with loop

manual for in_array - http://php.net/manual/en/function.in-array.php

manual for explode() - http://php.net/manual/ru/function.explode.php

$matches = array();
$items = explode(" ",$ss3);
foreach($items as $item){
  if(in_array($item, $words)){         
     $matches[] = $item; // Match found, storing in array
  }
} 

var_dump($matches); // To see all matches

Upvotes: 0

blkerai
blkerai

Reputation: 341

This code will help you for better answer

    <?php
    $str="Hello World Good";
    $word=array("Hello","Good");
    $strArray=explode(" ",$str);
   foreach($strArray as $val){
   if(in_array($val,$word)){
   echo $val."<br>";
   }
   }

 ?>

Upvotes: 0

Narendrasingh Sisodia
Narendrasingh Sisodia

Reputation: 21422

You can use str_word_count along with array_intersect like as

$ss3="How to make a book";
$words = array ("book","paper","page","sheet");
$new_str_array = str_word_count($ss3,1);
$founded_words = array_intersect($words,$new_str_array);
if(count($founded_words) > 0){
    echo "Founded : ". implode(',',$founded_words);
}else{
    echo "Founded Nothing";
}

Demo

Upvotes: 0

devpro
devpro

Reputation: 16117

in_array will only check the complete string value in an array. Now you can try this:

$string = 'How to make a book';
$words = array("book","paper","page","sheet");
foreach ($words as $val) {
    if (strpos($string, $val) !== FALSE) {
        echo "Match found"; 
        return true;
    }
}
echo "Not found!";

Upvotes: 0

Shailesh Katarmal
Shailesh Katarmal

Reputation: 2785

You could use regular expressions. It would look something like this:

$ss3 = "How to make a book";

 if (preg_match('/book/',$ss3))
     echo 'found!!';

Upvotes: 0

bIgBoY
bIgBoY

Reputation: 417

This is how you will check for existence of a word from a string. Also remember that you must first convert the string to lowercase and then explode it.

$ss3="How to make a book";
$ss3 = strtolower($ss3);
$ss3 = explode(" ", $ss3);
    $words = array ("book","paper","page","sheet");
    if (in_array($ss3, $words) )
{
    echo "found it"; 
}

Cheers!

Upvotes: 0

Hanky Panky
Hanky Panky

Reputation: 46900

Loop over your array, check for each element if it exists in the string

$ss3="How to make a book";
$words = array ("book","paper","page","sheet");
foreach($words as $w){
  if (stristr($ss3,$w)!==false)
   echo "found $w \n"; 
}

Fiddle

Upvotes: 2

Related Questions