Обрезать строку с русскими символами, сохраняя html теги

Тема в разделе "Как сделать...", создана пользователем Extalionez, 15 фев 2013.

  1. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Доброго времени суток! В принципе из названия темы всё ясно - имеем строку примерно следующего содержания
    PHP:
    $string ="<span style=\"font-size: 14pt; line-height: 150%; font-family: 'Times New Roman', serif;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Евреем можешь ты не быть, но в Израиль ехать надо. Обязательно! И я поехала. </span>"
    Вот как бы её обрезать до максимум например 20 символов, именно текста, сохраняя теги, но обрезая текст чтобы в итоге получить например
    PHP:
    $string ="<span style=\"font-size: 14pt; line-height: 150%; font-family: 'Times New Roman', serif;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Евреем можешь ты не </span>"
    Странно, но google не помог, да и в самом php я нашёл только mb_substr:oops:
     
  2. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    78
    PHP:
    $string ="<span style=\"font-size: 14pt; line-height: 150%; font-family: 'Times New Roman', serif;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Евреем можешь ты не быть, но в Израиль ехать надо. Обязательно! И я поехала. </span>";
     
    function 
    replace_cb($matches) {
        return 
    strlen($matches[0]) > 20 substr($matches[0], 020) : $matches[0];
    }
     
    $res preg_replace_callback('#[а-яА-Я\s.,!?]+#''replace_cb'$string);
     
    echo 
    $res;
     
    Extalionez нравится это.