php实现根据词频生成tag云的方法
本文实例讲述了php实现根据词频生成tag云的方法。分享给大家供大家参考。具体如下:
这里给定一段文本,分析文本的词频分布,生成tag云
<?php
/**
*Tagclouddemobasedonwordfrequency
*@author:unknown
*@since:2007-02-27
*/
//Storefrequencyofwordsinanarray
$freqData=array();
//Randomwords
$lorem="Loremipsumdolorsitamet,consectetueradipiscingelit.
Phasellusvestibulumullamcorpertortor.Aeneanquislacusquisneque
adipiscingultricies.Pellentesquetinciduntligulavitaenibhornare
pharetra.Proindignissimtortor.Donecetipsumnectellusgravida
tempor.Aliquamullamcorperpurusvelfelis.Praesentfaucibus.
Curabiturporta.Nullainloremquismilaciniafringilla.Integer
adipiscingmiquisfelis.Pellentesquehabitantmorbitristiquesenectus
etnetusetmalesuadafamesacturpisegestas.Quisquesagittisantein
arcu.Sedliberoenim,venenatissitamet,vestibulumat,porttitorid,
neque.Vestibulumornaresempererat.Sedtinciduntnibhetmassa.Cras
seddiam.Quisqueblanditenim.
Sednonummy.Aeneanmollisturpisquisenim.Nammassanulla,varius
molestie,aliquetet,feugiateget,nisi.Sedmollis,leoutpretium
placerat,nibhturpisegestasipsum,sedaliquamnequeeniminrisus.
Nullamnisl.Sedtinciduntleoquistellus.Maurisnonlorem.Aenean
tristiquejustoatarcu.Fusceetlorem.Namsodales.Mauriscondimentum
diam.Namcommodo.Cumsociisnatoquepenatibusetmagnisdisparturient
montes,nasceturridiculusmus.Crasacrisus.Proinetdolorlaoreetmi
gravidasodales.Duisbibendum,ipsumposuereegestasposuere,duilacus
feugiatturpis,idtincidunturnaestsitametest.Craseusem.
";
//Getindividualwordsandbuildafrequencytable
foreach(str_word_count($lorem,1)as$word)
{
//Foreachwordfoundinthefrequencytable,
//incrementitsvaluebyone
array_key_exists($word,$freqData)?$freqData[$word]++:$freqData[$word]=0;
}
//==============================================================
//=Functiontoactuallygeneratethecloudfromprovideddata=
//==============================================================
functiongetCloud($data=array(),$minFontSize=12,$maxFontSize=30)
{
$minimumCount=min(array_values($data));
$maximumCount=max(array_values($data));
$spread=$maximumCount-$minimumCount;
$cloudHTML='';
$cloudTags=array();
$spread==0&&$spread=1;
foreach($dataas$tag=>$count)
{
$size=$minFontSize+($count-$minimumCount)
*($maxFontSize-$minFontSize)/$spread;
$cloudTags[]='<astyle="font-size:'.floor($size).'px'
.'"class="tag_cloud"href="http://www.google.com/search?q='
.$tag
.'"title="\''.$tag.'\'returnedacountof'.$count
.'">'
.htmlspecialchars(stripslashes($tag)).'</a>';
}
returnjoin("\n",$cloudTags)."\n";
}
?>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title>TagCloudDemo</title>
<styletype="text/css"media="screen">
/*<![CDATA[*/
.tag_cloud{padding:3px;text-decoration:none;}
.tag_cloud:link{color:#81d601;}
.tag_cloud:visited{color:#019c05;}
.tag_cloud:hover{color:#ffffff;background:#69da03;}
.tag_cloud:active{color:#ffffff;background:#ACFC65;}
/*]]>*/
</style>
</head>
<body>
<h1>SampleTagCloud</h1>
<divid="wrapper">
<?phpechogetCloud($freqData)?>
</div>
</body>
</html>
希望本文所述对大家的php程序设计有所帮助。