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&amp;&amp;mysql)三
Oct 09 PHP
php基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 PHP
海河写的 Discuz论坛帖子调用js的php代码
Aug 23 PHP
轻松修复Discuz!数据库
May 03 PHP
THINKPHP支持YAML配置文件的设置方法
Mar 17 PHP
[原创]php逐行读取txt文件写入数组的方法
Jul 02 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
Jan 08 PHP
简单谈谈php延迟静态绑定
Jan 26 PHP
php实现等比例不失真缩放上传图片的方法
Nov 14 PHP
php中static和const关键字用法分析
Dec 07 PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 PHP
PHP实现随机数字、字母的验证码功能
Aug 01 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
一个ubbcode的函数,速度很快.
2006/10/09 PHP
PHP实现获取某个月份周次信息的方法
2015/08/11 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
smarty自定义函数用法示例
2016/05/20 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
JavaScript 私有成员分析
2009/01/13 Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
JavaScript中的排序算法代码
2011/02/22 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
Python3 入门教程 简单但比较不错
2009/11/29 Python
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
python基础教程之获取本机ip数据包示例
2014/02/10 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
在Django的视图中使用数据库查询的方法
2015/07/16 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
python找出因数与质因数的方法
2019/07/25 Python
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
电钳工人个人求职信
2014/05/10 职场文书
小学安全汇报材料
2014/08/14 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript