[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запись в поток в UTF8
Crusader4Christ
Открыл мануал ПХП по fwrite:
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х байтными).

Спустя 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 написал(а):
echo strlen('日') . '<br/>'; // 3
echo strlen('誕') . '<br/>'; // 3
echo strlen('a') . '<br/>'; // 1
echo strlen('а') . '<br/>'; // 2 это кириллица
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.