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 相关文章推荐
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
php Xdebug 调试扩展的安装与使用.
Mar 13 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
PHP 输出URL的快捷方式示例代码
Sep 22 PHP
php实现的农历算法实例
Aug 11 PHP
一个简单安全的PHP验证码类 附调用方法
Jun 24 PHP
一个简单的php MVC留言本实例代码(必看篇)
Sep 22 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
Aug 10 PHP
php 截取中英文混合字符串的方法
May 31 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 PHP
php中关于换行的实例写法
Sep 26 PHP
win10下 php安装seaslog扩展的详细步骤
Dec 04 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
PHP校验ISBN码的函数代码
2011/01/17 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
js类中的公有变量和私有变量
2008/07/24 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
JavaScript 反科里化 this [译]
2012/09/20 Javascript
js实现网页自动刷新可制作节日倒计时效果
2014/05/27 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
Bootstrap输入框组件使用详解
2017/06/09 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
2018/03/06 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
python list 合并连接字符串的方法
2013/03/09 Python
Python实现简单的可逆加密程序实例
2015/03/05 Python
python排序方法实例分析
2015/04/30 Python
分享Python字符串关键点
2015/12/13 Python
Django自定义认证方式用法示例
2017/06/23 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
python要安装在哪个盘
2020/06/15 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
花店创业计划书范文
2014/02/07 职场文书
会计专业导师推荐信
2014/03/08 职场文书
销售个人求职信范文
2014/04/28 职场文书
学习计划书怎么写
2014/09/15 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python
SQL 聚合、分组和排序
2021/11/11 MySQL