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 相关文章推荐
PHP安全编程之加密功能
Oct 09 PHP
php中防止伪造跨站请求的小招式
Sep 02 PHP
关于PHP堆栈与列队的学习
Jun 21 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
php实现将数组转换为XML的方法
Mar 09 PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 PHP
PHP中函数gzuncompress无法使用的解决方法
Mar 02 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 PHP
php的RSA加密解密算法原理与用法分析
Jan 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
thinkphp特殊标签用法概述
2014/11/24 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
2020/04/26 PHP
javascript面向对象之二 命名空间
2011/02/08 Javascript
使用JavaScript构建JSON格式字符串实现步骤
2013/03/22 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
js星星评分效果
2014/07/24 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
2019/06/21 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
2020/04/07 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
python 计算数据偏差和峰度的方法
2019/06/29 Python
python序列化与数据持久化实例详解
2019/12/20 Python
Python 没有main函数的原因
2020/07/10 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
大学生毕业自我评价范文分享
2013/11/11 职场文书
中专毕业生的自我鉴定
2013/12/01 职场文书
商场消防管理制度
2014/01/12 职场文书
5s标语大全
2014/06/23 职场文书
中考学习决心书
2015/02/04 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
python基础学习之递归函数知识总结
2021/05/26 Python