Правильное образение текста или как избавиться от "колокольчика"

Тема в разделе "Как сделать...", создана пользователем saymong, 21 июл 2014.

Статус темы:
Закрыта.
  1. saymong

    saymong

    Регистр.:
    29 сен 2010
    Сообщения:
    480
    Симпатии:
    359
    Здравствуйте уважаемые форумчане.
    Уже 2 суток мучаюсь, но никак не могу найти решения.
    В общем имеется код (вывод заголовков с обрезание по кол-ву символов).

    PHP:
    <h2><a href='<?php the_permalink(); ?>' title='<?php the_title(); ?>'>

    <?php if(get_option('tigu_shorten_titles') == 'true'): ?>
    <?php $shorttitle 
    substr(the_title('','',FALSE),0,21); ?><?php echo $shorttitle; if (strlen($shorttitle) >20){ echo '&hellip;'; } ?>
    <?php 
    else: ?>
    <?php the_title
    (); ?>
    <?php 
    endif; ?>
    </a></h2>
    Но текст на сайте выходит в виде

    Темные Войн�…

    Как избавиться от колокольчика в конце слова (знак �)

    Заранее благодарю за помощь. Все файлы в кодировке UTF8 без BOM.
     
    Последнее редактирование: 21 июл 2014
    Dead23Angel нравится это.
  2. invader

    invader Серый кардинал в отставке :)

    Moderator
    • Супермодератор
    Регистр.:
    3 апр 2006
    Сообщения:
    2.718
    Симпатии:
    5.693
    mb_strlen вместо strlen
    mb_substr вместо substr
    Правильней было бы использовать конструкцию типа:
    mb_substr($str, 0, 21, 'UTF-8');
    Ещё более правильней написать функцию my_substr или найти в инете готовую, дабы не изобретать велосипед.
     
    saymong нравится это.
  3. BACZ

    BACZ

    Регистр.:
    18 июн 2008
    Сообщения:
    608
    Симпатии:
    381
    по идее можете прилепить куда нибудь в заголовке что-нибудь типа
    <?php header('Content-Type: text/html;charset=windows-1251');?>
    или какая там у вас кодировка.
    Затем можно забить на троеточие и вывести какой нибудь обычный символ, хотя бы ... точками
     
  4. warg

    warg Постоялец

    Регистр.:
    26 июн 2007
    Сообщения:
    122
    Симпатии:
    122
    если на сервере / хостинге нет модуля php_mbstring и нет возможности его включить, то можно сделать так:
    iconv_substr($str, 0, 20, 'UTF-8')
     
  5. saymong

    saymong

    Регистр.:
    29 сен 2010
    Сообщения:
    480
    Симпатии:
    359
    На сервер уже было установлено расширение mb_string. Проблему решил просто прибавлением mb_
    Спасибо за помощь и желание помочь.
     
    Dead23Angel и FedorMaxx нравится это.
Статус темы:
Закрыта.