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程序设计有所帮助。