使用php提取搜索引擎优化的关键字对
我目前正在调查一些关于长尾搜索引擎优化的新想法。我有一个网站,人们可以创建自己的博客,这已经带来了相当好的长尾流量。我已经在文章的标题标签中显示了文章标题 但是,标题通常与内容中的关键字不匹配,我想在标题中添加一些php实际确定的关键字可能是最好的 我试着用我自己制作的脚本来找出页面上最常见的单词。这很管用,但问题是它会产生一些无用的词 我突然想到,有用的方法是制作一个php脚本,提取频繁出现的单词对(或3个单词集),然后将它们放入一个数组中,按照它们出现的频率排序 我的问题:如何以更动态的方式解析文本,以查找重复出现的单词对或单词三元组。我该怎么办使用php提取搜索引擎优化的关键字对,php,regex,seo,title,keyword,Php,Regex,Seo,Title,Keyword,我目前正在调查一些关于长尾搜索引擎优化的新想法。我有一个网站,人们可以创建自己的博客,这已经带来了相当好的长尾流量。我已经在文章的标题标签中显示了文章标题 但是,标题通常与内容中的关键字不匹配,我想在标题中添加一些php实际确定的关键字可能是最好的 我试着用我自己制作的脚本来找出页面上最常见的单词。这很管用,但问题是它会产生一些无用的词 我突然想到,有用的方法是制作一个php脚本,提取频繁出现的单词对(或3个单词集),然后将它们放入一个数组中,按照它们出现的频率排序 我的问题:如何以更动态的方式
function extractCommonWords($string, $keywords){
$stopWords = array('i','a','about','an','and','are','as','at','be','by','com','de','en','for','from','how','in','is','it','la','of','on','or','that','the','this','to','was','what','when','where','who','will','with','und','the','www');
$string = preg_replace('/\s\s+/i', '', $string); // replace whitespace
$string = trim($string); // trim the string
$string = preg_replace('/[^a-zA-Z0-9 -]/', '', $string); // only take alphanumerical characters, but keep the spaces and dashes too…
$string = strtolower($string); // make it lowercase
preg_match_all('/\b.*?\b/i', $string, $matchWords);
$matchWords = $matchWords[0];
foreach ( $matchWords as $key=>$item ) {
if ( $item == '' || in_array(strtolower($item), $stopWords) || strlen($item) <= 3 ) {
unset($matchWords[$key]);
}
}
$wordCountArr = array();
if ( is_array($matchWords) ) {
foreach ( $matchWords as $key => $val ) {
$val = strtolower($val);
if ( isset($wordCountArr[$val]) ) {
$wordCountArr[$val]++;
} else {
$wordCountArr[$val] = 1;
}
}
}
arsort($wordCountArr);
$wordCountArr = array_slice($wordCountArr, 0, $keywords);
return $wordCountArr;
}
函数提取常用词($string,$keywords){
$stopWords=array('i','a','about','an','and','are','as','at','be','by','com','de','en','for','from','how','in','is','it','la','of','on','or','that','the','this','to','was','what','who','will','with','und the','www';
$string=preg_replace('/\s\s+/i','$string);//替换空白
$string=trim($string);//修剪字符串
$string=preg_replace('/[^a-zA-Z0-9-]/',''$string);//只接受字母数字字符,但也保留空格和破折号…
$string=strtolower($string);//使其小写
preg_match_all('/\b.*?\b/i',$string,$matchWords);
$matchWords=$matchWords[0];
foreach($key=>$item的匹配词){
如果($item==''| |在_数组中(strtolower($item),$stopWords)| | strlen($item)$val){
$val=strtolower($val);
如果(isset($wordCountArr[$val])){
$wordCountArr[$val]++;
}否则{
$wordCountArr[$val]=1;
}
}
}
arsort($wordCountArr);
$wordCountArr=array\u切片($wordCountArr,0,$keywords);
返回$wordCountArr;
}
为了包含一些代码,这里有另一个原语改编,返回给定长度和出现次数的多单词关键字,而不是去除所有常用单词,它只过滤那些位于关键字开头和结尾的单词。它仍然返回一些废话,但这确实是不可避免的
function getLongTailKeywords($str, $len = 3, $min = 2){ $keywords = array();
$common = array('i','a','about','an','and','are','as','at','be','by','com','de','en','for','from','how','in','is','it','la','of','on','or','that','the','this','to','was','what','when','where','who','will','with','und','the','www');
$str = preg_replace('/[^a-z0-9\s-]+/', '', strtolower(strip_tags($str)));
$str = preg_split('/\s+-\s+|\s+/', $str, -1, PREG_SPLIT_NO_EMPTY);
while(0<$len--) for($i=0;$i<count($str)-$len;$i++){
$word = array_slice($str, $i, $len+1);
if(in_array($word[0], $common)||in_array(end($word), $common)) continue;
$word = implode(' ', $word);
if(!isset($keywords[$len][$word])) $keywords[$len][$word] = 0;
$keywords[$len][$word]++;
}
$return = array();
foreach($keywords as &$keyword){
$keyword = array_filter($keyword, function($v) use($min){ return !!($v>$min); });
arsort($keyword);
$return = array_merge($return, $keyword);
}
return $return;
}
函数getLongTailKeywords($str,$len=3,$min=2){$keywords=array();
$common=array('i','a','about','an','and','are','as','at','be','by','com','de','en','for','from','how','in','is','it','la','of','on','or','that','this','to','was','what','who','will','with','und the','www');
$str=preg_replace('/[^a-z0-9\s-]+/','',strtolower(带标签($str));
$str=preg_split('/\s+-\s+\s+/',$str,-1,preg_split_NO_EMPTY);
while(0)你能提供更多的细节和一些代码(如果你有)来说明你尝试了什么,你的问题到底是什么?你对正则表达式有多熟悉/熟悉?我得试一试!谢谢!@AmyNeville它仍然很有趣-确实让你对“common”数组更感兴趣尝试获得更有意义的结果。:)-甚至可能根据文章的长度调整参数
$len
和$min
?这正是我需要的,谢谢!