Как не показывать только «...» при зачистке блока текста - PullRequest
0 голосов
/ 28 марта 2012

Моя цель состоит в том, чтобы заштриховать объем текста, если он превышает 85 символов, и отображать только 85 символов, за которыми следует «...».

Однако в некоторых случаях отображается только «...» инет текста вообще.Для этого есть причина?то есть это вызвано определенными персонажами?(т. е. «и т. д.»?

Если это так, ваше руководство будет высоко оценено

Мой код:

if ((strlen($row["description"]) > 85) && (strlen($row["description"]) > 1)) {
    $whitespaceposition = strpos($row["description"]," ",85);
    $description_string = substr($row["description"],0,$whitespaceposition)."...";
}
else if ((strlen($row["description"]) < 85) && (strlen($row["description"]) > 1)) {
    $description_string = $row["description"];
}

Спасибо всем заранее

George

Ответы [ 4 ]

2 голосов
/ 28 марта 2012

Ну, если длина описания ровно 85, то, вероятно, ничего не будет отображаться.

Может быть более надежным показать полное описание, но используйте эти правила CSS, чтобы позаботиться об обрезкеих:

white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;

Затем браузер позаботится о том, чтобы текст был обрезан, и добавляет ... в конец для вас.

0 голосов
/ 28 марта 2012
if (strlen($row["description"]) > 85) {
    $whitespaceposition = strpos($row["description"]," ",85);
    $description_string = substr($row["description"],0,$whitespaceposition)."...";
}
else {
    $description_string = $row["description"];
}
0 голосов
/ 28 марта 2012

Еще одна альтернатива всем хорошим ответам там

$desc = $row["description"];
return substr($desc, 0, 85) . (strlen($desc) > 85 ? '...' : '');
0 голосов
/ 28 марта 2012

Вот моя функция для решения этой проблемы:

function shortern($str, $int_length = 30) {

    if (strlen($str) <= $int_length)
        return $str;
    else {

        $str    =   substr($str, 0, ($int_length - 3));

        return preg_replace("/^(.*)[\s\.]+[^\s\.]*$/", "$1...", $str);

    }

}

В основном я запускаю регулярное выражение, чтобы найти первое полностью свободное слово и добавить к нему точки, так что оно скорее добавляет точки к hello... вместо hello ther... (привет)

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