Reputation: 939
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
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
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
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";
}
Upvotes: 0
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
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
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
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";
}
Upvotes: 2