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将网址字符串转换成超链接(网址或email)
May 25 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
thinkphp实现图片上传功能分享
Mar 04 PHP
php实现的支持断点续传的文件下载类
Sep 23 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
PHP命名空间和自动加载类
Apr 03 PHP
php创建图像具体步骤
Mar 13 PHP
php查询内存信息操作示例
May 09 PHP
Laravel框架源码解析之模型Model原理与用法解析
May 14 PHP
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 02 PHP
PHP实现两种排课方式
Jun 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
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
php实现utf-8转unicode函数分享
2015/01/06 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
帝国cms常用标签汇总
2015/07/06 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
JS 字符串连接[性能比较]
2009/05/10 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
python字典的常用操作方法小结
2016/05/16 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
详解python while 函数及while和for的区别
2018/09/07 Python
Python按钮的响应事件详解
2019/03/04 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
html5启动原生APP总结
2020/07/03 HTML / CSS
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
剪枝的学问教学反思
2014/02/07 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
工程承包协议书
2014/10/20 职场文书
采购员岗位职责
2015/02/03 职场文书
党员评议自我评价
2015/03/03 职场文书
文案策划岗位个人自我评价(范文)
2019/08/08 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏