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 foreach 参数强制类型转换的问题
Dec 10 PHP
PHP开发中常用的字符串操作函数
Feb 08 PHP
关于session在PHP5的配置文件中的详细设置参数说明
Apr 20 PHP
PHP中session变量的销毁
Feb 27 PHP
PHP的引用详解
Feb 22 PHP
php中header跳转使用include包含解决参数丢失问题
May 08 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
PHP数据分析引擎计算余弦相似度算法示例
Aug 08 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
PHP chr()函数讲解
Feb 11 PHP
PHP获取访问设备信息的方法示例
Feb 20 PHP
ThinkPHP5和ThinkPHP6的区别
Mar 31 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数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
php合并js请求的例子
2013/11/01 PHP
php异步多线程swoole用法实例
2014/11/14 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
2013/11/06 Javascript
js与jQuery 获取父窗、子窗的iframe
2013/12/20 Javascript
js导出txt示例代码
2014/01/14 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
判断js数据类型的函数实例详解
2019/05/23 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
Python 使用office365邮箱的示例
2020/10/29 Python
雷蛇美国官网:Razer
2020/04/03 全球购物
群众路线领导对照材料
2014/08/23 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
校园运动会广播稿
2014/10/06 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
DIY胆机必读:各国电子管评价
2022/04/06 无线电
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers