За последние 24 часа нас посетили 9247 программистов и 458 роботов. Сейчас ищут 85 программистов ...

информационный объем строки в байтах в кодировке UTF8

Тема в разделе "PHP для профи", создана пользователем aleks89, 26 сен 2020.

  1. aleks89

    aleks89 Активный пользователь

    С нами с:
    20 июл 2011
    Сообщения:
    4
    Симпатии:
    0
    делаю обратный реинжиниринг для одного плагина Wordpress (нужно данные напрямую в базу формировать)
    плагин данные записывает в базу в виде примерно таком
    s:34:"Сериал на домашнем"
    s:42:"Мультфильм на Домашнем"
    s:32:"Спорт на домашнем"

    значение после s: содержит информационный объем строки в байтах в кодировке UTF8
    на одном из сайтов увидел такие же расчетные значения (https://theithelper.ru/informacionnyj-obem-teksta)

    пробовал разные варианты преобразований, перегуглил кучу тем, но ничего не выходит

    кто может подсказать, какими php-функциями сделать преобразование, чтобы выйти на эти же цифры?
     
  2. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    208
    Адрес:
    Санкт-Петербург
    Буква кодируется двумя байтами, посчитать несложно. Значит искать среди mb_* функций.
     
  3. Drunkenmunky

    Drunkenmunky Новичок

    С нами с:
    12 авг 2020
    Сообщения:
    220
    Симпатии:
    36
    А не надо ничего преобразовывать.
    Код (Text):
    1. $text = 's:34:"Сериал на домашнем"';
    2. echo strlen($text).'<br />';
    3. echo strlen(iconv("UTF-8", "WINDOWS-1251", $text)).'<br />';
     
  4. Sail

    Sail Активный пользователь

    С нами с:
    1 ноя 2016
    Сообщения:
    1.261
    Симпатии:
    289
    Всё-же спрошу: "serialize() смотрели?".
    --- Добавлено ---
    Пример.
     
    aleks89 нравится это.
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    2.795
    Симпатии:
    439
    @Drunkenmunky, вы чЁ-то перемудрили. ТС спрашивает просто про strlen для "Сериал на домашнем" и т.д. И, да, он, видимо, не в курсе, что подобные записи получаются в результате сериализации.
     
  6. Drunkenmunky

    Drunkenmunky Новичок

    С нами с:
    12 авг 2020
    Сообщения:
    220
    Симпатии:
    36
    Он дал ссылку "на такое же".
    Так там подсчитывают количество байтов в строке в utf-8
    Вас ввел в заблуждение вид этой самой строки.
     
  7. aleks89

    aleks89 Активный пользователь

    С нами с:
    20 июл 2011
    Сообщения:
    4
    Симпатии:
    0
    да, serialize() помогла получить нужные значения
    благодарю всех за помощь и особенно @Sail за пример

    к сожалению, ранее не сталкивался с этой функцией, оказывается Wordpress её активно использует