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 相关文章推荐
截获网站title标签之家内容的例子
Oct 09 PHP
PHP 类相关函数的使用详解
May 10 PHP
php实现批量压缩图片文件大小的脚本
Jul 04 PHP
php遍历数组的4种方法总结
Jul 05 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
Laravel 5.0 发布 新版本特性详解
Feb 10 PHP
php实现ip白名单黑名单功能
Mar 12 PHP
php+ajax实现的点击浏览量加1
Apr 16 PHP
详解PHP的Yii框架中自带的前端资源包的使用
Mar 31 PHP
Smarty模板变量调节器用法分析
May 23 PHP
PHP使用Nginx实现反向代理
Sep 20 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
Jun 03 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中目录,文件操作详谈
2007/03/19 PHP
PHP设置进度条的方法
2015/07/08 PHP
php将金额数字转化为中文大写
2015/07/09 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
jqPlot 基于jquery的画图插件
2011/04/26 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
为开发者准备的10款最好的jQuery日历插件
2014/02/04 Javascript
js中this的用法实例分析
2015/01/10 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
详解如何在vue项目中使用layui框架及采坑
2019/05/05 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
python的几种开发工具介绍
2007/03/07 Python
详解Python的Django框架中的模版相关知识
2015/07/15 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
python面向对象入门教程之从代码复用开始(一)
2018/12/11 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
匡威英国官网:Converse英国
2018/12/02 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
校班主任推荐信范文
2013/12/03 职场文书
业务员岗位职责范本
2013/12/15 职场文书
生产部厂长职位说明书
2014/03/03 职场文书
党员政治学习材料
2014/05/14 职场文书
租房协议书范例
2014/10/14 职场文书