Байтный размер строки в PHP [дубликаты]

0

У меня есть зашифрованное изображение, и перед его сохранением я хотел бы знать, сколько места он занимает. Я могу получить количество символов через strlen($img) или через mb_strlen($img) но я хотел бы получить число, подобное 16KiB (или KB).

Затем я сохраняю строку в MySQL данных MySQL в формате blob, где я могу видеть ее размер с помощью PhpMyAdmin.

EDIT Если я использую strlen для получения размера байта строки (что мне нужно), я получаю другое значение из размера байта, отображаемого в моей базе данных MySQL (где строка не сохраняется как символ, а как блог, что означает двоичный), Как это может быть? И как я могу узнать, насколько большой будет размер двоичного файла при сохранении строки в базе данных.

Я сохраняю строку просто с помощью команды MySQL

INSERT INTO table (content, bla) VALUES ($string, bla); (не совсем правильно, но, например, цель - это работает, когда правильно)

Теперь, когда я заглядываю в свою базу данных, он отображает мне размер, например, 315 КБ, но когда я беру $string и делаю strlen на нем, он возвращает что-то вроде 240000 (не то же самое в битах, что и в КБ)

Я буду исследовать себя...

Теги:
database
string

1 ответ

1
Лучший ответ

Это по сути то же самое, что и ответ Дани, но немного более компактный.

function human_filesize($bytes, $decimals = 2) {
    $size = array('B','kB','MB','GB','TB','PB','EB','ZB','YB');
    $factor = floor((strlen($bytes) - 1) / 3);
    return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$size[$factor];
}

echo human_filesize(filesize($filename));

Источник: http://jeffreysambells.com/2012/10/25/human-readable-filesize-php

  • 0
    Я получил это сейчас, я сделал неправильное преобразование. Я ввел это, и теперь это так же, как в БД. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню