php自動(dòng)獲取關(guān)鍵字的方法
更新時(shí)間:2015年01月06日 10:59:58 投稿:shichen2014
這篇文章主要介紹了php自動(dòng)獲取關(guān)鍵字的方法,通過自定義函數(shù)tiqukeyword實(shí)現(xiàn)關(guān)鍵字的自動(dòng)獲取功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
本文實(shí)例講述了php自動(dòng)獲取關(guān)鍵字的方法。分享給大家供大家參考。
具體實(shí)現(xiàn)方法如下:
復(fù)制代碼 代碼如下:
$mincipin=5;//最小詞頻
$minlen=4;//關(guān)鍵字最小長度
tiqukeyword($tiqustr,$minlen,$mincipin);
function tiqukeyword($tiqustr,$minlen,$mincipin)
{$strlong=strlen($tiqustr);
$arr=array();
$k=-1;
for($i=0;$i<($strlong-$mincipin*$minlen);$i++){
$end=ceil(($strlong-$i)/$mincipin+$i);
for($j=$minlen;$j<$end;$j++){$num=0;
if(($guanjianzi=substr($tiqustr,$i,$j))!==false){
$wz=$i+$j;
$num++;}
else{break;}
while($wz<$strlong){if(($wz=strpos($tiqustr,$guanjianzi,$wz))!==false)
{$num++;
$wz=$wz+strlen($guanjianzi);}
else break;
}
if($j==$minlen){
if($num>=$mincipin){$maxnum=$num;$k++;$str=substr($tiqustr,$i,$j);
$arr[$k]=array($i,$j,$str,$num,0);
}
else{break;}
}
else{
if($num>=$maxnum){
$maxnum=$num;
$str=substr($tiqustr,$i,$j);
$arr[$k]=array($i,$j,$str,$num,0);
}
else break;
}
}
}
echo '初步得到的數(shù)組:';
print_r($arr);
//echo '<br/><br/><br/><br/>';
$arrlong=count($arr);
for($i=0;$i<$arrlong;$i++){
$bjarr=$arr[$i];
$nowid=$i;
if($bjarr[4]==1)continue;
for($j=$i+1;$j<$arrlong;$j++){
if($arr[$j][4]==1)continue;
$qujianks=$bjarr[0];
$qujianjs=$bjarr[1]+$bjarr[0]-1;
$a=$arr[$j][0];
$b=$arr[$j][1]+$arr[$j][0]-1;
if(($bjarr[2]==$arr[$j][2])&&($bjarr[3]>$arr[$j][3]))$arr[$j][4]=1;
if($a<=$qujianks&&$qujianks<=$b&&$a<=$qujianjs&&$qujianjs<=$b)
{if($bjarr[3]<=$arr[$j][3]){
$arr[$nowid][4]=1;$nowid=$j;$bjarr=$arr[$j];
}
}
elseif($qujianks<=$a&&$a<=$qujianjs&&$qujianks<=$b&&$b<=$qujianjs){
$arr[$j][4]=1;
}
}
}
echo '<br/><br/><br/><br/>重疊加標(biāo)記后的數(shù)組:';
print_r($arr);
$jieguoarr=array();
for($i=0;$i<$arrlong;$i++)
{if($arr[$i][4]==0)$jieguoarr[]=$arr[$i];
}
echo '<br/><br/><br/><br/>';
echo '最后得到的數(shù)組:';
print_r($jieguoarr);
}
$minlen=4;//關(guān)鍵字最小長度
tiqukeyword($tiqustr,$minlen,$mincipin);
function tiqukeyword($tiqustr,$minlen,$mincipin)
{$strlong=strlen($tiqustr);
$arr=array();
$k=-1;
for($i=0;$i<($strlong-$mincipin*$minlen);$i++){
$end=ceil(($strlong-$i)/$mincipin+$i);
for($j=$minlen;$j<$end;$j++){$num=0;
if(($guanjianzi=substr($tiqustr,$i,$j))!==false){
$wz=$i+$j;
$num++;}
else{break;}
while($wz<$strlong){if(($wz=strpos($tiqustr,$guanjianzi,$wz))!==false)
{$num++;
$wz=$wz+strlen($guanjianzi);}
else break;
}
if($j==$minlen){
if($num>=$mincipin){$maxnum=$num;$k++;$str=substr($tiqustr,$i,$j);
$arr[$k]=array($i,$j,$str,$num,0);
}
else{break;}
}
else{
if($num>=$maxnum){
$maxnum=$num;
$str=substr($tiqustr,$i,$j);
$arr[$k]=array($i,$j,$str,$num,0);
}
else break;
}
}
}
echo '初步得到的數(shù)組:';
print_r($arr);
//echo '<br/><br/><br/><br/>';
$arrlong=count($arr);
for($i=0;$i<$arrlong;$i++){
$bjarr=$arr[$i];
$nowid=$i;
if($bjarr[4]==1)continue;
for($j=$i+1;$j<$arrlong;$j++){
if($arr[$j][4]==1)continue;
$qujianks=$bjarr[0];
$qujianjs=$bjarr[1]+$bjarr[0]-1;
$a=$arr[$j][0];
$b=$arr[$j][1]+$arr[$j][0]-1;
if(($bjarr[2]==$arr[$j][2])&&($bjarr[3]>$arr[$j][3]))$arr[$j][4]=1;
if($a<=$qujianks&&$qujianks<=$b&&$a<=$qujianjs&&$qujianjs<=$b)
{if($bjarr[3]<=$arr[$j][3]){
$arr[$nowid][4]=1;$nowid=$j;$bjarr=$arr[$j];
}
}
elseif($qujianks<=$a&&$a<=$qujianjs&&$qujianks<=$b&&$b<=$qujianjs){
$arr[$j][4]=1;
}
}
}
echo '<br/><br/><br/><br/>重疊加標(biāo)記后的數(shù)組:';
print_r($arr);
$jieguoarr=array();
for($i=0;$i<$arrlong;$i++)
{if($arr[$i][4]==0)$jieguoarr[]=$arr[$i];
}
echo '<br/><br/><br/><br/>';
echo '最后得到的數(shù)組:';
print_r($jieguoarr);
}
希望本文所述對大家的php程序設(shè)計(jì)有所幫助。
相關(guān)文章
php8擴(kuò)展arginfo生成工具及工具初體驗(yàn)介紹
這篇文章主要為大家介紹了php8的擴(kuò)展arginfo生成工具及工具初體驗(yàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06WordPress中編寫自定義存儲(chǔ)字段的相關(guān)PHP函數(shù)解析
這篇文章主要介紹了WordPress中編寫自定義字段的相關(guān)PHP函數(shù)解析,包括對不可見的自定義字段的相關(guān)介紹,需要的朋友可以參考下2015-12-12通過table標(biāo)簽,PHP輸出EXCEL的實(shí)現(xiàn)方法
以下是利用table標(biāo)簽,對PHP輸出EXCEL的實(shí)現(xiàn)代碼進(jìn)行了介紹,需要的朋友可以過來參考下2013-07-07使用游標(biāo)進(jìn)行PHP SQLSRV查詢的方法與注意事項(xiàng)
在 PHP 中使用 SQLSRV 查詢時(shí),如果查詢結(jié)果集較大,可以考慮使用游標(biāo)來提高查詢效率。使用游標(biāo)可以將查詢結(jié)果集分成多個(gè)小部分進(jìn)行處理,減輕服務(wù)器的負(fù)擔(dān),提高查詢性能2023-05-05