I can't seem to find anything that solves the following and thought i would ask for help.
I am trying to retrieve an Array of all the stopwords (including phrase matched words) within a string and also how many times each has been found. The following code is the nearest i have got to, which will return a $counter value for the total number of stopwords found (single instance only though, not multiple counts) and obviously does not list the words.
I have tried using preg_match_all and various Array outputs and all have resulted in "head scratching" errors.
Any help would be appreciated.
// test string
$string = 'a string to see how many times all stopwords words are found, must include phrases and return an array of all stopwords and how many times each was found';
// test stopwords
$stopwords = array('all','times','words are found');
function counter_words($string, $stopwords) {
$counter = 0;
foreach ($stopwords as $stopword) {
$pattern = '/\b' . $stopword . '\b/i';
if (preg_match($pattern, $string)) {
$counter++;
}
}
return $counter;
}
// test - output counter only
echo counter_words($string, $stopwords);
With some modification, I am hoping to be able to return an array (presumably an associated array) where i can echo out something similar to:
Word/phrase found: "words are found", instances found "1"
Word/phrase found: "times", instances found "1"
etc...
Many Thanks
James
You are only increasing the counter if there is a match, not on the number of matches. Use
preg_match_all
and count the number of matched results.$string = 'a string to see how many times all stopwords words are found, must include phrases and return an array of all stopwords and how many times each was found';
Demo: https://eval.in/709349
You also could
implode
the$stopwords
with|
if there will never be a special character in there, then you'd not need theforeach
.....
or for a count of each matched term (this also uses the
implode
approach).$string = 'a string to see how many times all stopwords words are found, must include phrases and return an array of all stopwords and how many times each was found';
Demo: https://eval.in/709369