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 配置文件中open_basedir选项作用
Jul 19 PHP
如何使用FireFox插件FirePHP调试PHP
Jul 23 PHP
使用ob系列函数实现PHP网站页面静态化
Aug 13 PHP
php实现utf-8转unicode函数分享
Jan 06 PHP
php中header跳转使用include包含解决参数丢失问题
May 08 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
Dec 30 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
mac下多个php版本快速切换的方法
Oct 09 PHP
PHP中的正则表达式实例详解
Apr 25 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
Aug 03 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
利用PHP实现开心消消乐的算法示例
Oct 12 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下目前为目最全的CURL中文说明
2010/08/01 PHP
检查php文件中是否含有bom的函数
2012/05/31 PHP
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
PHP遍历数组的方法汇总
2015/04/30 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
javascript跨域刷新实现代码
2011/01/01 Javascript
javascript常用的方法整理
2015/08/20 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
javascript this详细介绍
2016/09/19 Javascript
JS重载实现方法分析
2016/12/16 Javascript
AngularJs+Bootstrap实现漂亮的计算器
2017/08/10 Javascript
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
vue 进阶之实现父子组件间的传值
2019/04/26 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
python生成n个元素的全组合方法
2018/11/13 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
pytorch标签转onehot形式实例
2020/01/02 Python
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
Structs界面控制层技术
2013/10/11 面试题
政风行风评议整改方案
2014/09/15 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
行政申诉状范文
2015/05/20 职场文书
2016年中秋祝酒词
2015/11/26 职场文书