Utf_strlen

1. Данис (02.07.2010 / 18:29)
Call to undefined function utf_strlen() ,хотел применить ,тестирую на денвере версия PHP 5.2.4 ,что следует сделать ,может библиотека не установленна ,обьясните в чем дело

2. Михаил (02.07.2010 / 18:33)
substr_strlen попробуй

3. Данис (02.07.2010 / 18:40)
Какая разница,они вроде по умолчанию должны работать,в движках типа DCMS ,они используются но там ошибок не вызывают

4. Михаил (02.07.2010 / 18:45)
Может в dcms эта функция самописная? Кстати, я ошибся iconv_strlen, а не substr_strlen

5. Данис (02.07.2010 / 18:47)
Да не вроде ,utf_strlen() вроде в 5 версии пхп появилась ,для подсчета корректного UTF кодировки ,ну а есть альтернатива кроме strlen?

6. Neformat (02.07.2010 / 18:47)
utf_strlen это пользовательская функция, юзай iconv_strlen('строка','utf-8') или mb_strlen('строка','utf-8') если конечно установлены соответствующие библиотеки

7. Azzido (02.07.2010 / 18:48)
iconv_strlen($str,'utf-8');
mb_strlen($str,'utf-8');

utf_strlen(); это видимо пользовательская функция

8. Azzido (02.07.2010 / 18:48)
упс, писал долго

9. Михаил (02.07.2010 / 18:49)
Как я и предполагал в dcms изобретен велосипед.
function utf8_strlen($str)
{
if (DCMS_USE_MBSTRING)return mb_strlen($str);
elseif (DCMS_USE_ICONV)return iconv_strlen($str);
else
{
// извращенный способ при отсутствии библиотек
static $rus;
if (!isset($rus))$rus=array('й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в','а','п','р','о','л','д','ж','э','я','ч','с','м','и','т','ь','б','ю','Й','Ц','У','К','Е','Н','Г','Ш','Щ','З','Х','Ъ','Ф','Ы','В','А','П','Р','О','Л','Д','Ж','Э','Я','Ч','С','М','И','Т','Ь','Б','Ю');
return strlen(str_replace($rus, '0', $str));
}
}

Файл utf_string.php

10. Михаил (02.07.2010 / 18:50)
Ого блин, сколько понаписали, пока я dcms скачивал

11. Данис (02.07.2010 / 18:53)
Да час тоже заметил ,значит наилучший вариант это mb_strlen($str,'utf-8'); ,можете немного расписать как правильно использовать с небольшой частью кода ,она всегда корректно подсчитывает количество символов ?

12. Lugaro (02.07.2010 / 19:08)
Нормально будет считать, ещё можно в верху написать mb_internal_encoding('UTF-8'); чтоб не писать каждый рас mb_strlen($str,'utf-8'); а просто mb_strlen($str);

13. Данис (02.07.2010 / 19:24)
Спасибо ,всем за помощь

URL: https://visavi.net/topics/11124