Текст для обрезки к 340 символам

Я вытягиваю сообщения в блоге от DB. Я хочу обрезать текст к макс. длине 340 символов.

Если сообщение в блоге является более чем 340 символами, я хочу обрезать текст к последнему полному слову и добавить '...' на конце.

E.g.

NOT: In the begin....

BUT: In the ...
13
задан George Johnston 20 January 2010 в 20:29
поделиться

4 ответа

Другие ответы показывают вам, как вы можете сделать текст примерно 340 символов. Если это нормально для вас, то используйте один из других ответов.

Но если вы хотите очень строгий максимум из 340 символов, другие ответы не будут работать. Вам нужно помнить, что добавление ... » может увеличить длину строки, и вам нужно учитывать это.

$max_length = 340;

if (strlen($s) > $max_length)
{
    $offset = ($max_length - 3) - strlen($s);
    $s = substr($s, 0, strrpos($s, ' ', $offset)) . '...';
}

Обратите внимание, что здесь я использую перегрузку strrPOS , которая берет смещение, чтобы начать поиск непосредственно из правильного местоположения в строке, а не сначала сокращать строку.

Увидеть его работать в Интернете: IDEONE

14
ответ дан 1 December 2019 в 17:19
поделиться

Вы можете попробовать использовать функции, которые поставляются с PHP, такие как WordWrap

print wordwrap($text,340) . "...";
0
ответ дан 1 December 2019 в 17:19
поделиться

Похоже, вы захотите сначала обрезать текст до 340 символов точно, затем найдите местоположение последнего «в строке и обрежьте до этой суммы. Как это:

$string = substr($string, 0, 340);
$string = substr($string, 0, strrpos($string, ' ')) . " ...";
26
ответ дан 1 December 2019 в 17:19
поделиться

Попробуйте:

preg_match('/^.{0,340}(?:.*?)\b/siu', $text, $matches);
echo $matches[0] . '...';
7
ответ дан 1 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: