2013-02-01 10 views
0

substr_count를 사용하여 텍스트 블록에서 특정 그룹의 키워드 그룹을 추출하고 각 그룹의 단어가 몇 번 나타날지 계산하려고합니다.중첩 배열 내에서 substr_count 사용

$ keywords라는 배열을 만들었습니다. 찾고있는 실제 키워드가 들어있는 또 다른 배열입니다.

이 내 현재 코드입니다 :

$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; 
    }; 
}; 

내 문제는 모든 배열 내의 모든 키워드를 계산하고 내가 원하는 것은 키워드의 각 그룹에 대해 단지의 총이다, 모든 것을 함께 추가하는 것입니다. 내가해야 할 일에 대한 아이디어가 있습니까?

답변

3
$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); 

편집 : Live example

1

이 시도 :

$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); 
0

방금 ​​같은 내부 foreach 외부 $numberecho 필요

$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; 
} 
관련 문제