Получить часть файла по байтовому номеру в php - PullRequest
2 голосов
/ 30 июня 2011

Как мне заставить php возвращать только несколько байтов файла?Мол, я хотел загрузить байты с 7 по 15 в строку, не читая никакую другую часть файла?Важно, что мне не нужно загружать весь файл в память, так как файл может быть довольно большим.

Ответы [ 3 ]

13 голосов
/ 26 апреля 2013

Можно использовать file_get_contents () , используя параметры смещения и макслена.

$data = file_get_contents('somefile.txt', NULL, NULL, 6, 8);
10 голосов
/ 30 июня 2011

Использование fseek() и fread()

$fp = fopen('somefile.txt', 'r');

// move to the 7th byte
fseek($fp, 7);

$data = fread($fp, 8);   // read 8 bytes from byte 7

fclose($fp);
1 голос
/ 30 июня 2011

Использование Pear:

<?php
require_once 'File.php';

//read and output first 15 bytes of file myFile
echo File::read("/path/to/myFile", 15);
?>

Или:

<?php
// get contents of a file into a string
$filename = "/path/to/myFile";
$handle = fopen($filename, "r");
$contents = fread($handle, 15);
fclose($handle);
?>

В любом методе вы можете использовать байт 7-15, чтобы делать то, что вы хотите.Я не думаю, что вы можете идти после определенных байтов, не начиная с начала файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...