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程序设计有所帮助。