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中计算时间差的几种方法
Dec 31 PHP
PHP 编程安全性小结
Jan 08 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
Oct 21 PHP
PHP设计模式之简单投诉页面实例
Feb 24 PHP
php简单处理XML数据的方法示例
May 19 PHP
PHP字典树(Trie树)定义与实现方法示例
Oct 09 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
PHP实现的mongoDB数据库操作类完整实例
Apr 10 PHP
对php 判断http还是https,以及获得当前url的方法详解
Jan 15 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
Apr 27 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
解决cPanel无法安装php5.2.17
2014/06/22 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
2013/04/23 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
python使用PyGame模块播放声音的方法
2015/05/20 Python
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
python获取list下标及其值的简单方法
2016/09/12 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
经典c++面试题三
2015/07/08 面试题
班组长岗位职责范本
2014/01/05 职场文书
安全目标责任书
2014/07/22 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
2015元旦标语横幅
2014/12/09 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
离婚被告答辩状
2015/05/22 职场文书
采购员工作总结范文
2015/08/12 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
redis数据一致性的实现示例
2022/03/18 Redis
css3 选择器
2022/05/11 HTML / CSS