php实现根据词频生成tag云的方法


Posted in PHP onApril 17, 2015

本文实例讲述了php实现根据词频生成tag云的方法。分享给大家供大家参考。具体如下:

这里给定一段文本,分析文本的词频分布,生成tag云

<?php
/**
 * Tag cloud demo based on word frequency
 * @author: unknown
 * @since: 2007-02-27
 */
// Store frequency of words in an array
$freqData = array();
// Random words
$lorem = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Phasellus vestibulum ullamcorper tortor. Aenean quis lacus quis neque
adipiscing ultricies. Pellentesque tincidunt ligula vitae nibh ornare
pharetra. Proin dignissim tortor. Donec et ipsum nec tellus gravida
tempor. Aliquam ullamcorper purus vel felis. Praesent faucibus.
Curabitur porta. Nulla in lorem quis mi lacinia fringilla. Integer
adipiscing mi quis felis. Pellentesque habitant morbi tristique senectus
et netus et malesuada fames ac turpis egestas. Quisque sagittis ante in
arcu. Sed libero enim, venenatis sit amet, vestibulum at, porttitor id,
neque. Vestibulum ornare semper erat. Sed tincidunt nibh et massa. Cras
sed diam. Quisque blandit enim.
Sed nonummy. Aenean mollis turpis quis enim. Nam massa nulla, varius
molestie, aliquet et, feugiat eget, nisi. Sed mollis, leo ut pretium
placerat, nibh turpis egestas ipsum, sed aliquam neque enim in risus.
Nullam nisl. Sed tincidunt leo quis tellus. Mauris non lorem. Aenean
tristique justo at arcu. Fusce et lorem. Nam sodales. Mauris condimentum
diam. Nam commodo. Cum sociis natoque penatibus et magnis dis parturient
montes, nascetur ridiculus mus. Cras ac risus. Proin et dolor laoreet mi
gravida sodales. Duis bibendum, ipsum posuere egestas posuere, dui lacus
feugiat turpis, id tincidunt urna est sit amet est. Cras eu sem.
";
// Get individual words and build a frequency table
foreach( str_word_count( $lorem, 1 ) as $word )
{
 // For each word found in the frequency table, 
 //increment its value by one
 array_key_exists($word,$freqData)?$freqData[$word]++:$freqData[$word]=0;
}
// ==============================================================
// = Function to actually generate the cloud from provided data =
// ==============================================================
function getCloud($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( $data as $tag => $count )
 {
 $size = $minFontSize + ( $count - $minimumCount )
 * ( $maxFontSize - $minFontSize ) / $spread;
 $cloudTags[] = '<a style="font-size: ' . floor( $size ) . 'px'
 . '" class="tag_cloud" href="http://www.google.com/search?q='
 . $tag
 . '" title="\'' . $tag . '\' returned a count of ' . $count
 . '">'
 . htmlspecialchars( stripslashes( $tag ) ) . '</a>';
 }
 return join( "\n", $cloudTags ) . "\n";
} 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>Tag Cloud Demo</title>
 <style type="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>Sample Tag Cloud</h1>
 <div id="wrapper">
 <?php echo getCloud( $freqData ) ?>
 </div>
</body>
</html>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php函数array_merge用法一例(合并同类数组)
Feb 03 PHP
php代码书写习惯优化小结
Jun 20 PHP
初识PHP
Sep 28 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
php中请求url的五种方法总结
Jul 13 PHP
Yii框架核心组件类实例详解
Aug 06 PHP
php文件后缀不强制为.php的实操方法
Sep 18 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 PHP
php计算两个坐标(经度,纬度)之间距离的方法
Apr 17 #PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 #PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 #PHP
php和editplus正则表达式去除空白行
Apr 17 #PHP
PHP生成唯一订单号的方法汇总
Apr 16 #PHP
微信access_token的获取开发示例
Apr 16 #PHP
微信自定义菜单的处理开发示例
Apr 16 #PHP
You might like
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
PHP实现MySQL更新记录的代码
2008/06/07 PHP
phpMyadmin 用户权限中英对照
2010/04/02 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
2017/11/21 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
js下写一个事件队列操作函数
2010/07/19 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
Apache如何部署django项目
2017/05/21 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
Python脚本调试工具安装过程
2021/01/11 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
如何提高MySql的安全性
2014/06/19 面试题
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
优秀毕业生推荐信
2013/11/02 职场文书
研修第一天随笔感言
2014/02/15 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript