Как изменить результат подсчета символов в запросе PHP?

1

Я создал или реализовал этот ограничитель символов, который распространен на многих веб-сайтах, в моем случае я установил, что предел должен составлять не более 200 символов, за которым следует многоточие.

$str = $row[1];
       $count = strlen($str);

       if($count<200){
       $post = $row[1];
       }else{
       $end = $count-200;
       $mod = substr($row[1], 0, -$end);
       $post = $mod."...";
       }
       if ($row[0] % 2 == 0) {
       echo 
       '<div class="background-even">'.
       $row[2].
       '<br>'.
       '<br>'.
       nl2br($post).
       '<br>'.'<br>'.
       '</div>';
       }
       else {
       echo 
       '<div class="background-odd">'.
       $row[2].
       '<br>'.
       '<br>'.
       nl2br($post).
       '<br>'.'<br>'.
       '</div>';
       }

То, что я хочу сделать, - это кнопка, которую я нажимаю, как клише "читать больше" или что-то в этом роде, а затем показывает остальные.

Я могу несколько начать думать о таких решениях, как jQuery, чтобы скрыть/показать остальную часть контента или использовать идентификатор сообщения, чтобы вытащить всю сохраненную запись, я даже использовал запрос по URL-адресу раньше, но есть ли более простой метод?

  • 1
    Вы говорите что-то вроде нумерации страниц без обновления страницы?
  • 1
    Я бы сделал это с помощью CSS. Таким образом, весь контент находится на странице, но таблица стилей будет отображать только 200 символов и эллипсировать остальные. Затем «read more» снимает ограничение на этот элемент.
Показать ещё 2 комментария
Теги:
count
char
hide

1 ответ

1
Лучший ответ

Попробуйте следующее: http://jsfiddle.net/Twisty/dhbcdLL1/

Используя JQuery, вы можете это сделать.

function truncate(t, l) {
    if (t.length > l) {
        var parts = [];
        parts[0] = t.substr(0, l - 3);
        parts[1] = t.substr(l - 3);
        return parts[0] + "..." + "<span style='display: none;'>" + parts[1] + "</span>";
    } else {
        return t;
    }
}
$(function () {
    $(".truncate").each(function () {
        $(this).html(truncate($(this).text(), 200));
    });
    $("body").on("click", "a.show-more", function () {
        var parts = $(this).prev("p").text().split("...");
        $(this).prev("p").html(parts[0] + parts[1]);
        $(this).addClass("hide-more").removeClass("show-more").html("Hide More");
    });
    $("body").on("click", "a.hide-more", function () {
        var ft = $(this).prev("p").text();
        $(this).prev("p").html(truncate(ft, 200));
        $(this).addClass("show-more").removeClass("hide-more").html("Show More");
    });
});

Вы можете сделать раскол в PHP, если хотите.

$count = strlen($row[1]);
if($count<200){
    $post = $row[1];
}else{
    $parts = array(substr($row[1], 0, 197), substr($row[1], 197));
    $post = "{$parts[0]...<span style='display: none;'>{$parts[1]}</span>";
}
  • 0
    Спасибо за этот глубокий ответ. Я вижу, что вы использовали jQuery, я полагаю, если я правильно интерпретирую $. PHP интересен, мне придется исследовать дальше и попытаться реализовать (много случайных проектов / занятых жизнью). Несмотря ни на что, большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню