ФорумСообществоФлейм → Научите кота уму-разуму

Научите кота уму-разуму

  • lolcat

    Сообщения: 383 Репутация: N Группа: Кто попало

    Spritz 1 июня 2011 г. 6:29

    Есть текст, в котором есть теги вроде <b>, а также теги <br />.
    Как взять из него подстроку, содержащую не более пяти <br />. Есть ли какое-нибудь изящное решение?

    Тред удалю.
  • Flare

    Сообщения: 284 Репутация: N Группа: Кто попало

    Spritz 1 июня 2011 г. 6:31, спустя 1 минуту 52 секунды

    PCRE, больше, наверное, нету
  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 1 июня 2011 г. 6:36, спустя 4 минуты 16 секунд

    explode array_slice
    ιιlllιlllι унц-унц
  • lolcat

    Сообщения: 383 Репутация: N Группа: Кто попало

    Spritz 1 июня 2011 г. 11:50, спустя 5 часов 14 минут 7 секунд

    artoodetoo, спасибо, это ответ на мой вопрос.

    Но я подумал, что мне нужно также не допускать длины каждой из строк более 2000 знаков.
    Написал вот такую штуку:

    {
    $lines = explode ('<br />',$post["message"]); // detect long posts, cut
    $post["message"] = '';
    for($i=0; $i<count($lines); $i++) {
    if ($i>10 || (strlen($post["message"])+ strlen($lines[$i])) > 2006) {
    $len = 2006 - strlen($post["message"]);
    if($len > 100) {
    $post["message"] .= substr($lines[$i],0, $len).'…';
    }
    $post["message"] .= '<br /><em>'.sprintf($txt['post_cut'], $postlink).'</em>';
    break;
    }
    $post["message"] .= $lines[$i].'<br />';
    }
    }
  • AlexanderC

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 1 июня 2011 г. 15:15, спустя 3 часа 25 минут 14 секунд

    мдеа, интересный код ;D….
    При каждой итерации будет выполнятся count(), памяти ведь много….
    и кстати, если тэг окажется разрезанным твоим чудо кодом ?
  • lolcat

    Сообщения: 383 Репутация: N Группа: Кто попало

    Spritz 1 июня 2011 г. 16:24, спустя 1 час 9 минут 11 секунд

    При числе итераций меньше 10 count вряд ли много съест моей памяти.

    {
    $lines = explode ('<br />',$post["message"]); // detect long posts, cut
    $post["message"] = '';
    for($i=0; $i<count($lines); $i++) {
    if ($i>10 || (mb_strlen($post["message"], 'UTF-8')+ mb_strlen($lines[$i], 'UTF-8')) > 2006) {
    $len = 2006 - mb_strlen($post["message"], 'UTF-8');
    if($len > 100) {
    $post["message"] .= closetags(substr($lines[$i],0, $len)).'…';
    }
    $post["message"] .= '<p><em>'.sprintf($txt['post_cut'], $postlink).'</em></p>';
    break;
    }
    $post["message"] .= $lines[$i].'<br />';
    }
    }


    Функцию закрытия тегов взял вот отсюда http://rmcreative.ru/blog/post/zakryt-nezakrytye-tegi .
  • lolcat

    Сообщения: 383 Репутация: N Группа: Кто попало

    Spritz 21 июня 2011 г. 15:07, спустя 19 дней 22 часа 42 минуты

    Встретился в коде с синтаксисом вида
    $var{1}
    $var - это строка. Я так понял, что берется символ, соответствующий числу, вычисленному внутри фигурных скобок.
    Как это называется? Хочу ознакомиться с доками об этом, а нагуглить ну никак не получается.
  • lolcat

    Сообщения: 383 Репутация: N Группа: Кто попало

    Spritz 21 июня 2011 г. 15:12, спустя 5 минут 11 секунд

    Только спросил, сразу же все нашлось.
    Пыха помогает!

Пожалуйста, авторизуйтесь, чтобы написать комментарий!