首页 > PHP教程 > php开发知识文章

php 截取GBK文件任意个字符的方法

本文主要介绍了php 截取GBK文件任意个字符的方法,欢迎大家的学习。

文件 get.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内容:12aa1

测试命令:./get.php 6 1 (6和1表示2个参数,从第六个位置截取1个字符)

查看结果:

hexdump -C t.txt && hexdump -C a.txt

以上这篇php 截取GBK文件任意个字符的方法就是小编分享给大家的全部内容了,希望能给大家一个参考。

php 截取GBK文件任意个字符的方法

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。