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 相关文章推荐
如何给phpcms v9增加类似于phpcms 2008中的关键词表
Jul 01 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
php中socket通信机制实例详解
Jan 03 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
Dec 25 PHP
golang与PHP输出excel示例
Jul 22 PHP
php微信开发之百度天气预报
Nov 18 PHP
PHP 与 UTF-8 的最佳实践详细介绍
Jan 04 PHP
Yii2配置Nginx伪静态的方法
May 05 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
Jun 20 PHP
Laravel 读取 config 下的数据方法
Oct 13 PHP
gearman中任务的优先级和返回状态实例分析
Feb 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
提问的智慧
2006/10/09 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
php实现在限定区域里自动调整字体大小的类实例
2015/04/02 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
js实现图片旋转的三种方法
2014/04/10 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
详解Python中的文件操作
2016/08/28 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
Python实现随机漫步功能
2018/07/09 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
大学生就业策划书范文
2014/04/04 职场文书
交通安全寄语大全
2014/04/08 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
劳资员岗位职责
2015/02/13 职场文书
丧事酒宴答谢词
2015/09/30 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python