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 和 COM
Oct 09 PHP
IIS+PHP+MySQL+Zend配置 (视频教程)
Dec 13 PHP
一步一步学习PHP(5) 类和对象
Feb 16 PHP
PHP加密扩展库Mcrypt安装和实例
Nov 10 PHP
PHP登录环节防止sql注入的方法浅析
Jun 30 PHP
CodeIgniter中实现泛域名解析
Jul 19 PHP
php获取数组元素中头一个数组元素值的实现方法
Dec 20 PHP
laravel容器延迟加载以及auth扩展详解
Mar 02 PHP
php递归遍历多维数组的方法
Apr 18 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
Sep 09 PHP
Laravel模糊查询区分大小写的实例
Sep 29 PHP
PHP连接SQL server数据库测试脚本运行实例
Aug 24 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
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
鼠标经过的文本框textbox变色
2009/05/21 Javascript
基于JQuery的cookie插件
2010/04/07 Javascript
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
JavaScript模块模式实例详解
2017/10/25 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
python二分法实现实例
2013/11/21 Python
分析Python编程时利用wxPython来支持多线程的方法
2015/04/07 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
python 动态加载的实现方法
2017/12/22 Python
Python 元类实例解析
2018/04/04 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
Django中使用Celery的方法示例
2018/11/29 Python
Numpy的简单用法小结
2019/08/28 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
Pytorch: 自定义网络层实例
2020/01/07 Python
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
公证委托书模板
2014/04/03 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
浅谈Java父子类加载顺序
2021/08/04 Java/Android
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫
golang连接MySQl使用sqlx库
2022/04/14 Golang
服务器nginx权限被拒绝解决案例
2022/09/23 Servers