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 相关文章推荐
Email+URL的判断和自动转换函数
Oct 09 PHP
PHP+Tidy-完美的XHTML纠错+过滤
Apr 10 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
May 03 PHP
PHP实现下载功能的代码
Sep 29 PHP
PHP代码保护--Zend Guard的使用详解
Jun 03 PHP
使用php+swoole对client数据实时更新(一)
Jan 07 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
May 29 PHP
Laravel下生成验证码的类
Nov 15 PHP
PHP token验证生成原理实例分析
Jun 05 PHP
Laravel 5+ .env环境配置文件详解
Apr 06 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
解决File size limit exceeded 错误的方法
2013/06/14 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
DOM相关内容速查手册
2007/02/07 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
AJAX在JQuery中的应用详解
2019/01/30 jQuery
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
Django中使用group_by的方法
2015/05/26 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
python requests指定出口ip的例子
2019/07/25 Python
python下载库的步骤方法
2019/10/12 Python
Python类继承和多态原理解析
2020/02/05 Python
python3跳出一个循环的实例操作
2020/08/18 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
英国著名药妆店:Superdrug
2021/02/13 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
医院护士专业个人的求职信
2013/12/09 职场文书
卫校中专生的自我评价
2014/01/15 职场文书
ktv周年庆活动方案
2014/08/18 职场文书
聘任书的格式及模板
2019/10/28 职场文书
在CSS中使用when/else的方法
2022/01/18 HTML / CSS
mysql insert 存在即不插入语法说明
2022/03/25 MySQL