Note:
Writing to a network stream may end before the whole string is written. Return value of fwrite() may be checked:
<?php
function fwrite_stream($fp, $string) {
for ($written = 0; $written < strlen($string); $written += $fwrite) {
$fwrite = fwrite($fp, substr($string, $written));
if ($fwrite === false) {
return $written;
}
}
return $written;
}
Однако мне надо записать в кодировке UTF8 соответственно он мне не правильно посчитает strlen и отправит только часть строки?
Спустя 1 минута, 58 секунд (13.10.2011 - 16:24) Winston написал(а):
mb_strlen($string, 'UTF-8');
И также использовать mb_substr
Спустя 2 минуты, 45 секунд (13.10.2011 - 16:27) Crusader4Christ написал(а):
Цитата (Winston @ 13.10.2011 - 13:24) |
mb_strlen($string, 'UTF-8');И также использовать mb_substr |
Так mb_strlen мне даст длинну строки в символах, а мне надо именно в байтах вот для этого условия:
$written < strlen($string);
Или strlen правильно возвращает кол-во байт в данном случае?
Спустя 3 минуты, 32 секунды (13.10.2011 - 16:30) Winston написал(а):
В utf-8 есть минус - и это невозможность точно определить количество байт, т.к. латиница по 1 байта, а кириллица в основном по 2
Спустя 21 минута, 38 секунд (13.10.2011 - 16:52) Игорь_Vasinsky написал(а):
strlen() вроде как должна подсчитать
или взвешивай сам файл
или взвешивай сам файл
Спустя 1 минута, 36 секунд (13.10.2011 - 16:54) Winston написал(а):
Цитата (Игорь_Vasinsky @ 13.10.2011 - 16:52) |
strlen() вроде как должна подсчитать |
Цитата |
strlen -- Возвращает длину строки |
Если в анси, значит количество символов будет == количеству байт.
Но с utf-8 это не пройдет.
Спустя 23 минуты, 42 секунды (13.10.2011 - 17:17) imbalance_hero написал(а):
Crusader4Christ
strlen - считает количество байт.
mb_strlen - считает количество символов в строке (uft-8, так как символы бывают двух-трёх и 4х байтными).
strlen - считает количество байт.
mb_strlen - считает количество символов в строке (uft-8, так как символы бывают двух-трёх и 4х байтными).
Спустя 10 минут, 25 секунд (13.10.2011 - 17:28) Crusader4Christ написал(а):
ага то есть strlen посчитает кол-во байт вместо длинны, а в substr($string, $written) смещение также в байтах а не в символах, так что все путем, правильно понимаю?
Спустя 13 минут, 19 секунд (13.10.2011 - 17:41) Winston написал(а):
Читаем внимательно ответ Trianon'a
Спустя 1 минута, 50 секунд Winston написал(а):
Спустя 1 минута, 50 секунд Winston написал(а):
echo strlen('日') . '<br/>'; // 3
echo strlen('誕') . '<br/>'; // 3
echo strlen('a') . '<br/>'; // 1
echo strlen('а') . '<br/>'; // 2 это кириллица