PHP:计算文件或数组中单词出现频率
2023-09-14 08:58:32 时间
一:如果是小文件,可以一次性读入到数组中,使用方便的数组计数函数进行词频统计(假设文件中内容都是空格隔开的单词):
<?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);
Linux命令经典面试题:统计文件中出现次数最多的前10个单词
使用linux命令或者shell实现:文件words存放英文单词,格式为每行一个英文单词(单词可以重复),统计这个文件中出现次数最多的前10个单词。
cat words.txt | sort | uniq -c | sort -k1,1nr | head -10
主要考察对sort、uniq命令的使用,相关解释如下,命令及参数的详细说明请自行通过man查看,简单介绍下以上指令各部分的功能:
sort: 对单词进行排序
uniq -c: 显示唯一的行,并在每行行首加上本行在文件中出现的次数
sort -k1,1nr: 按照第一个字段,数值排序,且为逆序
head -10: 取前10行数据
相关文章
- 无服务器部署php程序,以typecho为例
- PHP DFA算法实现敏感词过滤包 php-dfa-sensitive
- 100 个常见的 PHP 面试题
- PHP 如何从关联数组中移除并返回指定的键值对
- php中的几种循环语句
- dedecms讲解-arc.listview.class.php分析,列表页展示详解程序员
- Linux系统下搜索PHP文件的技巧(linux查找php文件)
- 程序的安装及测试在Linux环境下安装PHP程序及其测试(Linux下php)
- 远程探索——PHP与MySQL的结合(php远程连接mysql)
- Linux下开发PHP项目的最佳选择:编辑器比较(linux下php编辑器)
- 如何在Linux系统下执行PHP文件?(linux下执行php)
- PHP实现在Linux系统中进行文件操作(php写linux文件)
- MacOS上配置PHP环境的指南(Macos配置php)
- PHP从Linux中读取文件的方法(php读取linux文件)
- PHP和MySQL的关联技巧(mysql关联php)
- PHP与MSSQL结合,提高数据查询效率(php能连mssql)
- PHP驱动MSSQL数据库操作实例研究(php mssql操作类)
- 文件Linux 下如何快速删除PHP文件(linux 删除php)
- PHP操作MySQL数据库,轻松获取数据。(php访问mysql数据库)
- Linux下快速搭建PHP环境(linux 搭建 php)
- 用PHP实现ODBC数据分页显示一例
- php遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
- 用PHP读取flv文件的播放时间长度
- php笔记之常用文件操作
- php入门学习知识点六PHP文件的读写操作代码
- php自定文件保存session的方法
- PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
- PHP中使用glob函数实现一句话删除某个目录下的所有文件
- 又一个PHP实现的冒泡排序算法分享