Как можно узнать длину строки Utf-8 в битах ?

Тема в разделе "PHP программирование", создана пользователем slavon-x86, 28 ноя 2010.

  1. slavon-x86

    slavon-x86 Well-Known Member

    Регистрация:
    18 дек 2005
    Сообщения:
    216
    Симпатии:
    0
    Как можно узнать длину строки UTF-8 в битах ?
     
  2. slavon-x86

    slavon-x86 Well-Known Member

    Регистрация:
    18 дек 2005
    Сообщения:
    216
    Симпатии:
    0
    Не могу.

    Проблема в том что к примеру в строке:
    $s='zй';
    буква 'z' будет использовать 1 байт
    а буква 'й' будет использовать 2 байта

    Конечно можно циклом посчитать (while (isset($s{$i}))...), но нужен более быстрый способ, т.к. текста много.
     
  3. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    slavon-x86
    обычной функцией для подсчета количества символов, что-то вроде strlen() попробуйте, получите значение в байтах (утверждать не могу)
     
  4. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    sax_ol
    для строк в utf длина строки определяется функцией mb_strlen(), а функция strlen() должна просто кол-во байт возвращать. попробуйте, не прогадаете :rolleyes:
     
  5. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    не верно=)
    Обе функции возращают кол-во _символов в строке_. ПРосто mb_strlen() считает мультибайтовые символы за 1(читаем мануалы). Отсюда вывод, что в приципе, енсли исходить из того, что 1 символ=1байт, то применяя strlen() к _любым_ строкам, мы и будем получать ее длину в байтах.

    А вообще.. посчитать кол-во байт\бит на пхп в строке.. хм.
    Решение в лоб:
    Проходим строку посимвольно, каждый элемент проверяя на вхождение в латинский алфаваит, и прочие однобайтные символы входит - сумма+1, не входит - сумма+2.

    Получите количество байт. Как в биты перевести самостоятельно сообразите?
     
  6. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    разве применив функцию strlen() к мультибайтовой строке мы не получим кол-во байт, а не символов? (про это я и говорил, это человеку и надо)
     
Загрузка...

Поделиться этой страницей