Кракозябры при обрезке текста
-
Собственно, есть сайт http://onlinekredit-zayavka.ru/
В слайдере и блоках ниже при обрезке текста статьи перед троеточием появляются «кракозябры». Их нужно убрать. Перерыл весь код, не могу понять в чем проблема.Вот кусок кода, который за это отвечает:
<?php $content = get_the_content(); $content = strip_tags($content); echo substr($content, 0, 219). '...'; ?>Может, проблема с кодировкой? Прошу помощи
-
Проблема с использованием substr, которая ничего не знает про мультибайтные кодировки. Поменять на
mb_substr($content, 0, 219, 'UTF-8')Спасибо, поменял, но теперь весь текст под заголовком и вовсе пропал. Не подскажете, как его вернуть обратно? Заранее спасибо.
echoне забыли?Забыл, как раз его прописываю. Спасибо. Текст появился. Только сайт начал долго грузится. mb_substr не влияет на скорость сайта? или это просто совпадение и у хостинга проблемы?
Вопрос исчерпан, проблемы на хостинге. Другие сайты тоже тормозят. Спасибо за помощь. Тему считаю решенной.
Думал, что все. Оказывается, что нет. Хотел по аналогии в коде слайдера прописать, но не тут то было. Вот код:
<?php $short_title = substr(the_title('','',True),0,35); echo $short_title; if (strlen($short_title) >50){ echo '...'; } ?>Подскажите, пожалуйста, как здесь прописать? Заранее спасибо
Аналогично
<?php $short_title = mb_substr(the_title('','',True),0,35,'UTF-8'); echo $short_title; if (mb_strlen($short_title,'UTF-8') >50){ echo '...'; } ?>Только не понятно, чего в одном месте 35, а в другом 50. По идее должны быть одинаковые числа.
К сожалению, данный код не помог. Ничего не изменилось.
PS. насчет разных цифр, то я экспериментировал с длиной заголовка) забыл одинаковые прописать.Если что, вот весь код слайдера:
<?php /** * Theme: silverOrchid * Theme URL: http://gazpo.com/2012/04/silverorchid * Created: April 2012 * Author: Sami Ch. * URL: http://gazpo.com * **/ $gazpo_settings = get_option( 'gazpo_options'); $slider_cat_id = $gazpo_settings['gazpo_slider_category']; //if no category is selected for slider, show latest posts if ( $slider_cat_id == 0 ) { $post_query = 'posts_per_page=4'; } else { $post_query = 'cat='.$slider_cat_id.'&posts_per_page=4'; } ?> <div id="gazpo-slider" > <ul class="ui-tabs-nav ui-tabs-selected"> <?php query_posts( $post_query ); ?> <?php if( have_posts() ) : while( have_posts() ) : the_post(); ?> <li class="ui-tabs-nav-item" id="nav-fragment-<?php echo $post->ID; ?>"> <a href="#fragment-<?php echo $post->ID; ?>"> <?php the_post_thumbnail( 'thumbnail', array('class' => 'slider_thumb') ); ?> <span class="title"> <?php $short_title = substr(the_title('','',False),0,59); echo $short_title; if (strlen($short_title) >50){ echo '...'; } ?> </span> <br /> <span class="date"><?php the_time('j F'); ?></span> </a> </li> <?php endwhile; endif;?> <?php wp_reset_query();?> </ul> <?php query_posts( $post_query ); ?> <?php if( have_posts() ) : while( have_posts() ) : the_post(); ?> <div id="fragment-<?php echo $post->ID; ?>" class="ui-tabs-panel ui-tabs-hide" style=""> <?php the_post_thumbnail( 'large', array('class' => 'slider_image') ); ?> <div class="info" > <h2> <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title(); ?>"> <?php $short_title = mb_substr(the_title('','',True),0,35,'UTF-8'); echo $short_title; if (mb_strlen($short_title,'UTF-8') >35){ echo '...'; } ?> </a> </h2> </div> </div> <?php endwhile; endif;?> <?php wp_reset_query();?> </div>Продолжаю диалог сам с собой))) Разобрался со слайдером, не там прописывал, оказывается. Только теперь слово обрезается и не показывается троеточие, хотя в коде оно вроде есть. Подскажите, как его прописать? На данный момент у меня такой кусок кода:
<?php $short_title = mb_substr(the_title('','',False),0,30,'UTF-8'); echo $short_title; if (mb_strlen($short_title,'UTF-8') >30) { echo '...';} ?>Код почитайте — поймете, почему нет трех точек (троеточие — это другой символ;)). Сначала получаем $short_title путем обрезания титлы до 30 букв, а затем проверяем, не длиннее ли $short_title 30 букв? 🙂
Можно как-то так модифицировать
<?php $full_title = the_title('','',False); $short_title = mb_substr($full_title,0,30,'UTF-8'); echo $short_title; if (mb_strlen($full_title,'UTF-8') >30) echo '...'; ?>Благодарю, все настроил.
Тема «Кракозябры при обрезке текста» закрыта для новых ответов.