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 相关文章推荐
WINDOWS 2000下使用ISAPI方式安装PHP
Sep 05 PHP
模拟OICQ的实现思路和核心程序(三)
Oct 09 PHP
PHP代码审核的详细介绍
Jun 13 PHP
一个简单且很好用的php分页类
Oct 26 PHP
Symfony2函数用法实例分析
Mar 18 PHP
yum命令安装php7和相关扩展
Jul 04 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
Jul 14 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
Laravel使用支付宝进行支付的示例代码
Aug 16 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 30 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 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
终于听上了直流胆调频
2021/03/02 无线电
PHP 反向排序和随机排序代码
2010/06/30 PHP
php数组去重的函数代码
2013/02/03 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
Vue-Cli项目优化操作的实现
2019/10/27 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
python实现下载文件的三种方法
2017/02/09 Python
python实现月食效果实例代码
2019/06/18 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
Python colormap库的安装和使用详情
2020/10/06 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
大学军训感想
2014/02/12 职场文书
慈善募捐倡议书
2015/04/27 职场文书
2015年重阳节主持词
2015/07/04 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
关于车尾的标语大全
2015/08/11 职场文书