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生成WAP页面
Oct 09 PHP
PHP 网页过期时间的控制代码
Jun 29 PHP
php中将汉字转换成拼音的函数代码
Sep 08 PHP
PHP把数字转成人民币大写的函数分享
Jun 30 PHP
用php守护另一个php进程的例子
Feb 13 PHP
WordPress中自定义后台管理界面配色方案的小技巧
Dec 29 PHP
PHP实现路由映射到指定控制器
Aug 13 PHP
PHP输出XML格式数据的方法总结
Feb 08 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
May 21 PHP
php实现文章评论系统
Feb 18 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 PHP
swoole锁的机制代码实例讲解
Mar 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
UCenter 批量添加用户的php代码
2012/07/17 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
2013/06/08 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
Node.js开发第三方微信公众平台
2017/06/05 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
laydate 显示结束时间不小于开始时间的实例
2017/08/11 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
Vue 过滤器filters及基本用法
2017/12/26 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
python通过加号运算符操作列表的方法
2015/07/28 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
解决Django no such table: django_session的问题
2020/04/07 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
智利最大的网上商店:Linio智利
2016/11/24 全球购物
中国医药集团国药在线:国药网
2017/02/06 全球购物
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
如何安装ruby on rails
2014/02/09 面试题
教师的实习自我鉴定
2013/12/17 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
班级活动总结格式
2014/08/30 职场文书
2014年工会工作总结
2014/11/12 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis