PHP编程计算文件或数组中单词出现频率的方法


Posted in PHP onMay 22, 2017

本文实例讲述了PHP编程计算文件或数组中单词出现频率的方法。分享给大家供大家参考,具体如下:

如果是小文件,可以一次性读入到数组中,使用方便的数组计数函数进行词频统计(假设文件中内容都是空格隔开的单词):

<?php
$str = file_get_contents("/path/to/file.txt"); //get string from file
preg_match_all("/\b(\w+[-]\w+)|(\w+)\b/",$str,$r); //place words into array $r - this includes hyphenated words
$words = array_count_values(array_map("strtolower",$r[0])); //create new array - with case-insensitive count
arsort($words); //order from high to low
print_r($words)

如果是大文件,读入内存就不合适了,可以采用如下方法:

<?php
$filename = "/path/to/file.txt";
$handle = fopen($filename,"r");
if ($handle === false) {
 exit;
}
$word = "";
while (false !== ($letter = fgetc($handle))) {
 if ($letter == ' ') {
  $results[$word]++;
  $word = "";
 }
 else {
  $word .= $letter;
 }
}
fclose($handle);
print_r($results);

对于大文件,第二种方法比较快比较安全,不会引起内存异常。

PHP 相关文章推荐
上传多个文件的PHP脚本
Nov 26 PHP
PHP 应用程序的安全 -- 不能违反的四条安全规则
Nov 26 PHP
PHP开发需要注意的安全问题
Sep 01 PHP
使用Apache的htaccess防止图片被盗链的解决方法
Apr 27 PHP
wamp下修改mysql访问密码的解决方法
May 07 PHP
php设置允许大文件上传示例代码
Mar 10 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
Apr 09 PHP
PHP+ajax分页实例简析
Dec 07 PHP
php自定义分页类完整实例
Dec 25 PHP
PHP MySql增删改查的简单实例
Jun 21 PHP
一个非常实用的php文件上传类
Jul 04 PHP
php字符串倒叙
Apr 01 PHP
Yii2框架中日志的使用方法分析
May 22 #PHP
浅谈PHP面向对象之访问者模式+组合模式
May 22 #PHP
php readfile下载大文件失败的解决方法
May 22 #PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 #PHP
PHP中trait使用方法详细介绍
May 21 #PHP
php写app接口并返回json数据的实例(分享)
May 20 #PHP
PHP实现json_decode不转义中文的方法
May 20 #PHP
You might like
php 在线打包_支持子目录
2008/06/28 PHP
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
基于jquery的cookie的用法
2011/01/10 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
javascript实现确定和取消提示框效果
2015/07/10 Javascript
Bootstrap每天必学之面板
2015/11/30 Javascript
Node.js实现JS文件合并小工具
2016/02/02 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
React服务端渲染原理解析与实践
2021/03/04 Javascript
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
python字典DICT类型合并详解
2017/08/17 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
django使用graphql的实例
2020/09/02 Python
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
麦当劳辞职信范文
2014/01/18 职场文书
益达广告词
2014/03/14 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL