filesize from a String

2019-03-15 08:05发布

how can i get the "filesize" from a string in php?

I put the string in a mysql database as a blob and i need to store the size of the blob. My solution was to create a temp file and put the string into the temp file. now i can get the filesize from the "string". but that solution is not good...

greetings

5条回答
成全新的幸福
2楼-- · 2019-03-15 08:20

It depends. If you have mbstring function overloading enabled, the only call that will work will be mb_strlen($string, '8bit');. If it's not enabled, strlen($string) will work fine as well.

So, you can handle both cases like this:

if (function_exists('mb_strlen')) {
    $size = mb_strlen($string, '8bit');
} else {
    $size = strlen($string);
}
查看更多
做自己的国王
3楼-- · 2019-03-15 08:20

use mb_strlen() as then you can tell it what type of encoding the string uses (if any) to get the size of it in bytes.

查看更多
Luminary・发光体
4楼-- · 2019-03-15 08:31
strlen()

before putting it into mysql, or in SQL:

LENGTH()

Notice that lenght can be various depending on character set. If you want to have real length in bytes use strlen(), if you want to have character count use mb_strlen() (if you have utf-8 encoding for example)

查看更多
Melony?
5楼-- · 2019-03-15 08:43

SELECT length(field) FROM table

From the MySQL docs:

LENGTH(str)

Returns the length of the string str, measured in bytes. A multi-byte character counts as multiple bytes. This means that for a string containing five two-byte characters, LENGTH() returns 10, whereas CHAR_LENGTH() returns 5.

查看更多
可以哭但决不认输i
6楼-- · 2019-03-15 08:44

If all you are storing is the string, then the size should be the length of your string times the number of bytes in the charset. So for Unicode that would be 2*strlen($string).

查看更多
登录 后发表回答