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 相关文章推荐
资料注册后发信小技巧
Oct 09 PHP
浅析PHP中Collection 类的设计
Jun 21 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
Sep 26 PHP
PHP实现删除非站内外部链接实例代码
Jun 17 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
PHP将session信息存储到数据库的类实例
Mar 04 PHP
Yii隐藏URL中index.php的方法
Jul 12 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
Apr 03 PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
Sep 25 PHP
php 文件上传至OSS及删除远程阿里云OSS文件
Jul 04 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
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
javascript获取选中的文本的方法代码
2013/10/30 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
jQuery异步提交表单实例
2017/05/30 jQuery
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
python中global用法实例分析
2015/04/30 Python
python nmap实现端口扫描器教程
2020/05/28 Python
基于python代码批量处理图片resize
2020/06/04 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
python让函数不返回结果的方法
2020/06/22 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
主持人演讲稿范文
2013/12/28 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
JS setTimeout与setInterval的区别
2022/04/20 Javascript