PHP 从一个文本字符串中提取关键字的实现方法

前端之家收集整理的这篇文章主要介绍了PHP 从一个文本字符串中提取关键字的实现方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一个函数定位接收一个字符串作为参数(连同其他配置可选参数),并且定位该字符串中的所有关键字(出现最多的词),返回一个数组或一个字符串由逗号分隔的关键字。功能正常工作,但我正在改进,因此,有任何的建议请评论,感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧。
经测试代码如下:

/**
 * 对参数$ str中查找所有的关键字(词出现最多)的
 * 而为了大多数出现的返回他们较少出现。
 * @参数字符串$ str中的要搜索的字符串的关键字。
 * @参数INT$ minWordLen[可选]一个词的最低限度的长度(字符数)被认为是一个关键字。
 * @参数INT$ minWordOccurrences[可选]出现最低限度的次数一个字有
 * 对参数$ str中要考虑的一个关键词。
 * @参数布尔$ asArray[可选]指定函数返回一个字符串,
 * 用逗号($ asArray= false),还是关键字数组($ asArray=真)分隔的关键字。
 * @返回混一个字符串,以逗号分隔如果param$ asArray是真实的关键词,
 * 用关键字否则阵列。
 *
 * @param 
 * @author 编程之家 jb51.cc jb51.cc
 **/
function extract_keywords($str,$minWordLen = 3,$minWordOccurrences = 2,$asArray = false)
{
 function keyword_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($keywords as $keyword_det)
 {
  if($keyword_det[1] < $minWordOccurrences) break;
  array_push($final_keywords,$keyword_det[0]);
 }
 return $asArray ? $final_keywords : implode(',',$final_keywords);
}
 
//How to use
 
//Basic lorem ipsum text to extract the keywords
$text = "
Lorem ipsum dolor sit amet,consectetur adipiscing elit. 
Curabitur eget ipsum ut lorem laoreet porta a non libero. 
Vivamus in tortor metus. Suspendisse potenti. Curabitur 
metus nisi,adipiscing eget placerat suscipit,suscipit 
vitae felis. Integer eu o@R_502_410@ enim,sed dignissim lorem. 
In fringilla molestie justo,vitae varius risus lacinia ac. 
Nulla porttitor justo a lectus iaculis ut vestibulum magna 
egestas. Ut sed purus et nibh cursus fringilla at id purus.
";
//Echoes: lorem,suscipit,metus,fringilla,purus,justo,eget,vitae,ipsum,curabitur,adipiscing
echo extract_keywords($text);


/***   代码来自编程之家 jb51.cc(jb51.cc)   ***/

猜你在找的PHP相关文章