Создание выдержек в стиле Wordpress - PullRequest
1 голос
/ 29 мая 2009

Я работаю над сайтом, который продвигает различные общедоступные RSS-каналы. Я хочу показать краткое описание записи в фиде без HTML.

Некоторые каналы снабжены хорошим отрывком, но многое не так, поэтому я оставляю свои собственные из полного контента.

Так, каков самый лучший / самый быстрый / самый простой способ взять блок текста и нарезать его до первой пары строк?

Ответы [ 2 ]

2 голосов
/ 29 мая 2009

Эта функция уменьшит блок текста до заданного предела слова, поэтому она не обрезается, если часть слова проходит через часть:

  function limit_text($text, $limit) {
      if (strlen($text) > $limit) {
          $words = str_word_count($text, 2);
          $pos = array_keys($words);
          $text = substr($text, 0, $pos[$limit]) . '...';
      }
      return $text;
    }

Пример использования:

echo limit_text('Hello here is a long sentence blah blah blah blah blah hahahaha haha haaaaaa', 5);

Выходы:

Hello here is a long ...
1 голос
/ 29 мая 2009

Это даст вам больше гибкости

function string_limiter($string, $limit = 50, $end_char = '…')
{
    if (trim($string) == '')
    {
        return $string;
    }

    preg_match('/^\s*+(?:\S++\s*+){1,'.(int) $limit.'}/', $string, $matches);

    if (strlen($string) == strlen($matches[0]))
    {
        $end_char = '';
    }

    return rtrim($matches[0]).$end_char;
}

Пример, как это назвать

$str = "Cras id ipsum accumsan dolor pulvinar sollicitudin et eu augue. Pellentesque sem metus, imperdiet tempor fringilla quis, convallis quis nisl. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Etiam eget lorem ligula. Sed congue odio enim. Etiam aliquet condimentum pellentesque. Sed urna velit, egestas et dictum non, pulvinar quis dui! Cras blandit porttitor tortor nec eleifend. Nullam porttitor scelerisque nunc, id porttitor orci lobortis nec. Curabitur vestibulum molestie purus, eget convallis dolor luctus eu! Morbi id felis eu eros mattis congue non nec nisl.";

echo string_limiter($str, 20);

Вы получите что-то вроде этого:

Cras id ipsum accumsan dolor pulvinar sollicitudin et eu augue. Pellentesque Sem Metus, Imperdiet Tempor Fringilla quis, convallis quis nisl.…

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...