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+DBM的同学录程序(5)
Oct 09 PHP
为PHP初学者的8点有效建议
Nov 20 PHP
php启用zlib压缩文件的配置方法
Jun 12 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
PHP程序员基本要求和必备技能
May 09 PHP
php curl 上传文件代码实例
Apr 27 PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 PHP
PHP实现Google plus的好友拖拽分组效果
Oct 21 PHP
thinkPHP交易详情查询功能详解
Dec 02 PHP
PHP中一个有趣的preg_replace函数详解
Aug 15 PHP
phpfpm的作用和用法
Oct 10 PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 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
php 变量定义方法
2009/06/14 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
深入解析PHP的引用计数机制
2013/06/14 PHP
一个漂亮的php验证码类(分享)
2013/08/06 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
php基础教程
2015/08/26 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
vue多种弹框的弹出形式的示例代码
2017/09/18 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
python文件写入实例分析
2015/04/08 Python
基于Python实现文件大小输出
2016/01/11 Python
Python自动发邮件脚本
2017/03/31 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
python实现ID3决策树算法
2018/08/29 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
python能开发游戏吗
2020/06/11 Python
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
加热夹克:RAVEAN
2018/10/19 全球购物
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
高中生学习总结的自我评价范文
2013/10/13 职场文书
社团活动总结怎么写
2014/06/30 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
律政俏佳人观后感
2015/06/09 职场文书
同学会感言
2015/07/30 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL