Reputation: 156
I'm trying to pull out certain groups of keywords from a block of text using substr_count and have it count how many times the words in each group appears.
I've created an array called $keywords, within it is another set of arrays which contain the actual keywords I am looking for.
This is my current code:
$textDump = "random bunch of text";
$keyWordsSports = array("nba", "raptor", "ufc", "basektball", "gym", "mma", "realgm", "running");
$keyWordsTech = array("apple", "rim", "blackberry", "facebook", "twitter", "google" );
$keywords = array($keyWordsSports, $keyWordsTech);
foreach ($keywords as $item){
foreach ($item as $newItem){
$number += substr_count(strtolower($textDump), strtolower($newItem));
echo $number;
};
};
My problem is that it counts all the keywords within all the arrays and adds everything together, what I want is just the total for each group of keywords. Any ideas on what I should do?
Upvotes: 0
Views: 145
Reputation: 1339
you just need to echo
the $number
outside the inner foreach
like this,
$textDump = "random bunch of text";
$keyWordsSports = array("nba", "raptor", "ufc", "basektball", "gym", "mma", "realgm", "running");
$keyWordsTech = array("apple", "rim", "blackberry", "facebook", "twitter", "google" );
$keywords = array($keyWordsSports, $keyWordsTech);
foreach ($keywords as $item) {
foreach ($item as $newItem) {
$number += substr_count(strtolower($textDump), strtolower($newItem));
}
echo $number;
}
Upvotes: 0
Reputation: 3453
Try this :
$textDump = "raptor bunch raptor basektball";
$keyWordsSports = array("nba", "raptor", "ufc", "basektball", "gym", "mma", "realgm", "running");
$keyWordsTech = array("apple", "rim", "blackberry", "facebook", "twitter", "google" );
$keywords = array($keyWordsSports, $keyWordsTech);
$matches=array();
foreach ($keywords as $item){
foreach ($item as $newItem){
$number = substr_count(strtolower($textDump), strtolower($newItem));
if($number>0)
{
$matches[strtolower($newItem)]=$number;
}
};
};
print_r($matches);
Upvotes: 1
Reputation: 10070
$keywords = array("sports"=>$keyWordsSports, "tech"=>$keyWordsTech);
$count=array("sports"=>0,"tech"=>0);
foreach ($keywords as $key=>$item){
foreach ($item as $newItem){
$count[$key] += substr_count(strtolower($textDump), strtolower($newItem));
}
}
print_r($count);
Edit: Live example
Upvotes: 3