php 截取GBK文档某个位置开始的n个字符方法


Posted in PHP onMarch 08, 2017

cut.php:

#!/usr/bin/php
<?php
define('INPUT_FILE', 't.txt');
define('OUTPUT_FILE', 'a.txt');
$pos = max(intval($argv[1]), 0); 
$len = max(intval($argv[2]), 0); 
$file_size = filesize(INPUT_FILE);
if($pos >= $file_size) exit;
$fp = fopen(INPUT_FILE, 'rb');
$point = 0; //current byte position
$string = ''; 
while(ftell($fp) < $file_size) {
  if($point >= $pos + $len) break;$byte = fread($fp, 1); 
  //php version >= 5.4
  $char = unpack('C', $byte)[1];
  if($char <= 0x7f) {
    //single byte
    if($point >= $pos) $string .= $byte;
    $point += 1;
    continue;
  } else {
    //double bytes
    if($point >= $pos) {
      $string .= $byte.fread($fp, 1); 
    } else {
      fseek($fp, 1, SEEK_CUR);
    }
    $point += 1;
    continue;
  }  
}
fclose($fp);
file_put_contents(OUTPUT_FILE, $string);
?>

源文件t.txt内容:

dkei20王nnso

测试命令:

./cut.php 6 1

查看结果:

hexdump -C t.txt && hexdump -C a.txt

以上这篇php 截取GBK文档某个位置开始的n个字符方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
Gregarius中文日期格式问题解决办法
Apr 22 PHP
php下使用SimpleXML 处理XML 文件
Feb 27 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
May 10 PHP
php断点续传之如何分割合并文件
Mar 22 PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
Nov 20 PHP
分享50个提高PHP执行效率的技巧
Dec 26 PHP
PHP中子类重载父类的方法【parent::方法名】
May 06 PHP
php mysql获取表字段名称和字段信息的三种方法
Nov 13 PHP
PHP清除缓存的几种方法总结
Sep 12 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 PHP
PHP中__set()实例用法和基础讲解
Jul 23 PHP
php封装json通信接口详解及实例
Mar 07 #PHP
PHP获取真实客户端的真实IP
Mar 07 #PHP
php实现简单加入购物车功能
Mar 07 #PHP
mac os快速切换多个PHP版本的方法
Mar 07 #PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
Mar 06 #PHP
PHP实现添加购物车功能
Mar 06 #PHP
PHP自动补全表单的两种方法
Mar 06 #PHP
You might like
PHP操作mysql数据库分表的方法
2016/06/09 PHP
PHP运行模式汇总
2016/11/06 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
Seajs的学习笔记
2014/03/04 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
JS+Canvas绘制时钟效果
2020/08/20 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
几种响应式文字详解
2017/05/19 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
nodejs文件夹深层复制功能
2019/09/03 NodeJs
Vuex模块化应用实践示例
2020/02/03 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
python多任务及返回值的处理方法
2019/01/22 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
幼儿教师考核制度
2014/01/25 职场文书
环保专项行动方案
2014/05/12 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
秋季运动会加油词
2015/07/18 职场文书
思品教学工作总结
2015/08/10 职场文书