, как я могу получить "размер файла" из строки в php?
Я поместил строку в базу данных mysql как большой двоичный объект, и мне нужно сохранить размер большого двоичного объекта. Мое решение состояло в том, чтобы создать временный файл и поместить строку во временный файл. теперь я могу получить размер файла из "строки". но это решение не является хорошим ...
привет
Это зависит от обстоятельств. Если у вас включена перегрузка функции mbstring , единственный вызов, который будет работать, будет mb_strlen ($ string, '8bit');
. Если он не включен, strlen ($ string)
также будет работать нормально.
Итак, вы можете обработать оба случая следующим образом:
if (function_exists('mb_strlen')) {
$size = mb_strlen($string, '8bit');
} else {
$size = strlen($string);
}
strlen()
перед помещением в mysql или в SQL:
LENGTH()
Обратите внимание, что длина может быть различной в зависимости от набора символов. Если вы хотите иметь реальную длину в байтах, используйте strlen (), если вы хотите подсчет символов, используйте mb_strlen () (если у вас, например, кодировка utf-8)
используйте mb_strlen () , так как тогда вы можете указать, какой тип кодирования использует строка (если есть), чтобы получить ее размер в байтах.
SELECT length(field) FROM table
Из MySQL docs:
LENGTH(str)
Возвращает длину строки str, измеряемая в байтах. Многобайтовый символ считается как несколько байт. Это означает, что для строки содержащей пять двухбайтовых символов, LENGTH() возвращает 10, тогда как CHAR_LENGTH() возвращает 5.
Если все, что вы храните, - это строка, то размер должен быть равен длине вашей строки, умноженной на количество байтов в кодировке. Итак, для Unicode это будет 2 * strlen ($ string).