Подтвердить что ты не робот

Ограничение текста только двумя строками

Я хочу ограничить текст фиксированным количеством строк для таблицы шириной 150 пикселей в html-письме, например:

Long text continues down the road into a lane and doesn't stop there

Я хочу, чтобы это выглядело так:

Long text continues down 
the road into a lane and...

Я усекаю строку длиной максимум 45 символов, включая многоточие, но иногда, когда присутствует длинное слово, она переходит в три строки:

Long text continues at
accelerating speed into the
road...

В идеале я хотел бы сломать слово, ускоряющее или, скорее, заполнить как можно больше символов в первой строке и продолжить вторую строку, есть ли способ сделать это в html? (Я посмотрел на слово-обертку, но, видимо, он не поддерживается во всех почтовых клиентах)

Кроме того, поскольку это почтовые клиенты, я не могу делать никаких javascript и т.д.

4b9b3361

Ответ 1

Решение для CSS

Вы можете установить высоту и сделать переполнение скрытым.

span {
    display: inline-block;
    border: black 1px solid;
    width: 300px;
    height: 40px;
    overflow: hidden;
}

Пример: http://jsfiddle.net/imoda/REs2Q/


Решение PHP

Альтернативой сервера является использование substr

<?php

    $string = "Oh squiggly line in my eye fluid. I see you lurking there on the peripheral of my vision. But when I try to look at you, you scurry away. Are you shy, squiggly line? Why only when I ignore you, do you return to the center of my eye? Oh, squiggly line, it alright, you are forgiven.";

    echo charlimit($string, 100);

    function charlimit($string, $limit) {

        return substr($string, 0, $limit) . (strlen($string) > $limit ? "..." : '');
    }

?>

Пример: http://codepad.org/OetkaMh6

Это выведет 100 символов строки, а затем добавит ... Trick, и вам придется изменить количество символов на то, что лучше всего подходит для вашей ситуации. Поскольку он является сторонним сервером, он не будет знать, сколько символов требуется в каждом сценарии для запуска только одного возврата каретки.

В качестве альтернативы вы можете ограничить количество слов:

<?php

    $string = "Oh squiggly line in my eye fluid. I see you lurking there on the peripheral of my vision. But when I try to look at you, you scurry away. Are you shy, squiggly line? Why only when I ignore you, do you return to the center of my eye? Oh, squiggly line, it alright, you are forgiven.";

    echo wordlimit($string, 20);

    function wordlimit($string, $limit) {

        $overflow = true;

        $array = explode(" ", $string);

        $output = '';

        for ($i = 0; $i < $limit; $i++) {

            if (isset($array[$i])) $output .= $array[$i] . " ";
            else $overflow = false;
        }

        return trim($output) . ($overflow ? "..." : '');
    }

?>

Пример: http://codepad.org/WYJFPaD5

Но это то же самое, вы должны приспособить его к "наилучшим образом подходящим"

Надеюсь, что это поможет.

Ответ 2

Если ваше сообщение является строкой, вы можете сделать следующее с PHP:

$stringChunkArray = str_split($string, 45); // 45 = desired char count
foreach ($stringChunkArray as $line) {
    echo $line.PHP_EOL;
}

Это гарантирует 45 символов в строке...

Ответ 3

Вы пытались обернуть каждую строку в <span style="white-space: nobreak;">...</span>, чтобы заставить ее не обертывать?

Некоторая документация может быть найдена здесь

Ответ 4

Стандартное поведение ячеек таблицы растягивается, чтобы соответствовать их контенту. Разрушение слов в зависимости от ширины ячейки потребует создания сценариев.

переполнение: скрытое просто отсекает остальную часть слов и не поддерживается в Outlook 2007/2010.

Ответ 5

Это сработало для меня, просто отрегулируйте высоту, как вы пожелаете.

blog_content  {
    display: inline-block;
    border: 0px;
    height: 600px;
    overflow: hidden;
}