php识别文件编码,并读出内容,对大文件也很有效率
来源:互联网 发布:java中匿名内部类 编辑:程序博客网 时间:2024/05/22 12:26
<?php/** * 检测文件编码 * @param string $file_path 文件路径 * @return string $filesize 默认为空,获取文件的全部内容,如果仅需要获取文件编码类型,获取前一百个字符即可,配合detect_encoding方法使用 * @return string 返回文件内容,自动换行 */function fileToSrting($file_path, $filesize = '') { //判断文件路径中是否含有中文,如果有,那就对路径进行转码,如此才能识别 if (preg_match("/[\x7f-\xff]/", $file_path)) { $file_path = iconv('UTF-8', 'GBK', $file_path); } if (file_exists($file_path)) { $fp = fopen($file_path, "r"); if ($filesize === '') { $filesize = filesize($file_path); } $str = fread($fp, $filesize); //指定读取大小,这里默认把整个文件内容读取出来 return $str = str_replace("\r\n", "<br />", $str); } else { die('文件路径错误!'); }}/** * 获取文件编码类型 * @param string $file_path 文件路径 * @param string $filesize 需要获取的字符长度 * @return string 返回字符编码 */function detect_encoding($file_path, $filesize = '1000') { $list = array('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1'); $str = fileToSrting($file_path, $filesize); foreach ($list as $item) { $tmp = mb_convert_encoding($str, $item, $item); if (md5($tmp) == md5($str)) { return $item; } } return '遇到识别不出来的编码!';}/** * 自动解析编码读入文件 * @param string $file_path 文件路径 * @param string $charset 读取编码 * @return string 返回读取内容 */function auto_read($file_path, $filesize = '', $charset = 'UTF-8') { $list = array('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1'); $str = fileToSrting($file_path, $filesize); foreach ($list as $item) { $tmp = mb_convert_encoding($str, $item, $item); if (md5($tmp) == md5($str)) { return mb_convert_encoding($str, $charset, $item); } } return "";}$file_path = "鸟哥的linux私房菜第二版包括基础和服务器.chm";echo "<pre>";$time1 = microtime(true);print_r(detect_encoding($file_path, 10));$time2 = microtime(true);printf("识别编码时间为:%s 秒 \n", $time2 - $time1);exit;echo "\n";echo "\n";echo "\n";echo "\n";print_r(auto_read($file));echo "</pre>";$time3 = microtime(true);printf("将文件读出到字符串时间为:%s 秒 \n", $time3 - $time2);exit;
读取文件尽量不要用file_get_contents,因为这个函数消耗内存很厉害,如果你的文件有个10M+,那服务器肯定就挂了!不信可以试试,本地试。如果非用不可,建议先判断一下文件大小,大于500kb就放弃掉。
阅读全文
0 0
- php识别文件编码,并读出内容,对大文件也很有效率
- PHP中如何读出文件内容
- 遍历文件夹下各个文件,然后读出每个文件的内容,并对内容进行过滤输出
- 文件编码读出
- VB:如何读出unicode编码的txt文件内容
- FATFS文件系统打开一个文件并读出内容
- JSP:读出指定的文件内容并显示
- C语言新建文件,向文件中输入内容并读出文件内容
- 实现对properties文件的顺序读出,并顺序写入。
- 将ini文件内容读出
- Php从数据库里读出数据,并生成xml文件
- 将学生信息保存到文件中,并读出文件内容
- 从文件中读出多有的内容
- 将字符串写入文件并读出来
- linux 文件编码识别
- 识别文件编码
- 识别文件编码
- php大文件切割和合并
- 离散题目13
- Android 通过adb shell am broadcast发送广播 adb命令
- C语言-数据结构-克鲁斯卡尔kruskal
- iOS 保持界面流畅性能优化
- 导航标题的设置影响UItabBar的标题解决方法集合
- php识别文件编码,并读出内容,对大文件也很有效率
- 基于Python语言使用RabbitMQ消息队列(三)
- NECKLACE section1.1 个人题解
- Jquery基础2-事件
- vue-zhihu-daily知乎日报
- C语言-数据结构-prim算法求最小生成树
- 【PMP认证考试之个人总结】第 8 章 人力资源管理
- 【转】Makefile中的foreach函数
- mysql的操作语句