经测试代码如下:
/**
* 对参数$ 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) ***/