Какой правильный способ получить размер двоичных данных в php?

Я прочитал часть файла и теперь хочу убедиться, что у части правильный размер. Как это сделать на php?

$part = fread($file, 1024);
return some_function($part) == 1024;

Я читал примеры, но я сомневаюсь, что буду использовать strlen из-за строки с завершающим нулем, которая может находиться внутри двоичных данных в $ part. Таким образом, strlen возвращает размер от начала части и до тех пор, пока в данных не будет представлен первый нулевой байт.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
3 918
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Согласно документации PHP для функции fread (), вы можете использовать конструкцию с использованием размер файла(), как показано в первом примере:

<?php
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

Обновление: для определения размера файла можно использовать функцию stat () без открытия или fstat () для открытого файла.

Мне нужно знать размер текущей части файла, но fstat / stat возвращает размер всего файла.

sholkyman 03.12.2018 12:42
Ответ принят как подходящий

Как указано в руководстве по PHP, Strlen возвращает количество байтов в строке, а не длину символа.

В PHP нулевой байт в строке учитывает НЕТ как конец строки, и любые нулевые байты включаются в длину строки.

Таким образом, Strlen можно использовать для двоичных данных, независимо от того, взяты ли данные из файла или из другого источника.

Другие вопросы по теме