php 截取GBK文件任意个字符的方法
2017-05-16 23:07:29
•
阅读
打赏
本文主要介绍了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文件任意个字符的方法就是小编分享给大家的全部内容了,希望能给大家一个参考。
相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型