cut.php:

#!/usr/bin/php<?phpdefine("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个字符方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持网页设计。