PHP函数实现从一个文本字符串中提取关键字的方法
本文实例讲述了PHP函数实现从一个文本字符串中提取关键字的方法。分享给大家供大家参考。具体分析如下:
这是一个函数定位接收一个字符串作为参数(连同其他配置可选参数),并且定位该字符串中的所有关键字(出现最多的词),返回一个数组或一个字符串由逗号分隔的关键字。功能正常工作,但我正在改进,因此,感兴趣的朋友可以提出改进意见。
/**
*Findsallofthekeywords(wordsthatappearmost)onparam$str
*andreturntheminorderofmostoccurrencestolessoccurrences.
*@paramstring$strThestringtosearchforthekeywords.
*@paramint$minWordLen[optional]Theminimunlength(numberofchars)ofawordtobeconsideredakeyword.
*@paramint$minWordOccurrences[optional]Theminimunnumberoftimesawordhastoappear
*onparam$strtobeconsideredakeyword.
*@paramboolean$asArray[optional]Specifiesifthefunctionreturnsastringwiththe
*keywordsseparatedbyacomma($asArray=false)orakeywordsarray($asArray=true).
*@returnmixedAstringwithkeywordsseparatedwithcommasifparam$asArrayistrue,
*anarraywiththekeywordsotherwise.
*/
functionextract_keywords($str,$minWordLen=3,$minWordOccurrences=2,$asArray=false)
{
functionkeyword_count_sort($first,$sec)
{
return$sec[1]-$first[1];
}
$str=preg_replace('/[^\\w0-9]/','',$str);
$str=trim(preg_replace('/\s+/','',$str));
$words=explode('',$str);
$keywords=array();
while(($c_word=array_shift($words))!==null)
{
if(strlen($c_word)<=$minWordLen)continue;
$c_word=strtolower($c_word);
if(array_key_exists($c_word,$keywords))$keywords[$c_word][1]++;
else$keywords[$c_word]=array($c_word,1);
}
usort($keywords,'keyword_count_sort');
$final_keywords=array();
foreach($keywordsas$keyword_det)
{
if($keyword_det[1]<$minWordOccurrences)break;
array_push($final_keywords,$keyword_det[0]);
}
return$asArray?$final_keywords:implode(',',$final_keywords);
}
//Howtouse
//Basicloremipsumtexttoextractthekeywords
$text="
Loremipsumdolorsitamet,consecteturadipiscingelit.
Curabituregetipsumutloremlaoreetportaanonlibero.
Vivamusintortormetus.Suspendissepotenti.Curabitur
metusnisi,adipiscingegetplaceratsuscipit,suscipit
vitaefelis.Integereuodioenim,seddignissimlorem.
Infringillamolestiejusto,vitaevariusrisuslaciniaac.
Nullaporttitorjustoalectusiaculisutvestibulummagna
egestas.Utsedpurusetnibhcursusfringillaatidpurus.
";
//Echoes:lorem,suscipit,metus,fringilla,purus,justo,eget,vitae,ipsum,curabitur,adipiscing
echoextract_keywords($text);
希望本文所述对大家的php程序设计有所帮助。