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的header和asp中的redirect比较
Oct 09 PHP
理解PHP5中static和const关键字的区别
Mar 19 PHP
来自phpguru得Php Cache类源码
Apr 15 PHP
利用curl 多线程 模拟 并发的详解
Jun 14 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
Destoon实现多表查询示例
Aug 21 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
Yii核心验证器api详解
Nov 23 PHP
php实现批量上传数据到数据库(.csv格式)的案例
Jun 18 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
Jan 22 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 中dirname(_file_)讲解
2007/03/18 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
vue ssr 指南详读
2018/06/29 Javascript
详解vue 兼容IE报错解决方案
2018/12/29 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
jQuery实现弹幕特效
2019/11/29 jQuery
python del()函数用法
2013/03/24 Python
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
python变量命名的7条建议
2019/07/04 Python
在python中求分布函数相关的包实例
2020/04/15 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
python用tkinter实现一个gui的翻译工具
2020/10/26 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
悦木之源美国官网:Origins美国
2016/08/01 全球购物
美国美妆网站:B-Glowing
2016/10/12 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
化妆师职业生涯规划书
2014/02/16 职场文书
大学生自荐信范文
2015/03/05 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
详解Java实践之建造者模式
2021/06/18 Java/Android
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android