PHP html_decode/html_entity_decode разрывает страницу с помощью JS

У меня возникли небольшие проблемы при попытке печати HTML на одной странице. У меня есть substr, чтобы показать первые X символов текста, и кнопка, чтобы показать больше. Моя проблема в том, что если я использую html_decode или html_entity_decode для печати в формате HTML (а не только в виде html), он разрывает страницу и показывает весь текст вместо первых символов X и кнопки "Показать больше".

PHP:

    $item->description =  html_decode($item->description);
if( strlen( $item->description ) > 70 ) {
    $item->description = substr($item->description, 0, 50 ) .
    '<span class="more-link">... <a href="#"><i class="fa fa-caret-down"></i> ' . t( 'theme_more', 'More' ) . '</a></span>' .
    '<span class="hidden-part">' . substr( $item->description, 50 )  . '</span>' .
    '<span class="less-link"><a href="#"><i class="fa fa-caret-up"></i> ' . t( 'theme_less', 'Less' ) . '</a></span>';
}

Код JS:

$( '.description .more-link a, .description .less-link a' ).on( 'click', function(e) {
e.preventDefault();
var desc = $(this).parents( '.description' );
var part = desc.find( '.hidden-part' ),
more = desc.find( '.more-link' ),
less = desc.find( '.less-link' );
if( part.is( ':visible' ) ) {
    part.hide();
    more.show();
    less.hide();
} else {
    part.show();
    more.hide();
    less.show();
}

});

Если я изменяю html_decode на strip_tags просто для отладки, он работает как положено, но печатает HTML-символы в виде простого текста (показать первые X-символы, а затем в кнопке Показать больше, он показывает остальную часть текста). С html decode, в основном, он показывает весь текст и создает кнопку в середине текста.

Моя проблема не в том, что теги HTML обрезаются с помощью substr.

Кто-нибудь может мне помочь? Спасибо

0 ответов

Другие вопросы по тегам