Обрезать переменную

Тема в разделе "PHP", создана пользователем vanderv, 12 авг 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. vanderv

    vanderv

    Регистр.:
    30 май 2009
    Сообщения:
    267
    Симпатии:
    12
    Не получается обрезать переменную!!! Использую функцию substr. Однако встречается текст у которого на конце вопросик в чёрном ромбике (кодировка утф-8). Есть ли варианты как обрезать до целого слова? ну чтобы небыло так сказать одна буква слова.
    Зы. Хочу реализовать "Читать дальше..."
     
  2. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Значит ты работаешь с UTF8, ага? Это нормально - substr работает нормально с однобайтными кодировками. Гугли на тему mb-функций(вот по теме). Но это потребует подключения библиотеки на стороне хостера.
    Если хостер проигнорирует просьбу включить, тогда можно воспользоваться самопальной функцией:
    PHP:
    function utf8_substr($str,$from,$len){
      return 
    preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
                           
    '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
                           
    '$1',$str);
    }
    Или перекодировать в win1251, обрезать, потом снова перегнать в utf8.
     
  3. ec_stasis

    ec_stasis Создатель

    Регистр.:
    5 июл 2010
    Сообщения:
    24
    Симпатии:
    3
    Есть еще библиотека iconv. Функция, соответсвенно, iconv_substr(). Чтобы проверить, включены ли библиотеки, можно просто попробовать вызвать mb_substr() и iconv_substr(). Только нужно убедиться, что включен вывод сообщений об ошибках. Если не получишь сообщение "Call to undefined function", значит библиотека прсутствует и функция определена, т.е. ею можно пользоваться.
     
  4. theorc

    theorc Создатель

    Регистр.:
    23 авг 2010
    Сообщения:
    18
    Симпатии:
    1
Статус темы:
Закрыта.