[Помогите] Знак вопроса после текста-анонса в wp, как убрать?

Тема в разделе "Wordpress", создана пользователем maste, 6 май 2012.

Статус темы:
Закрыта.
Модераторы: Sorcus
  1. maste

    maste Создатель

    Регистр.:
    27 мар 2010
    Сообщения:
    29
    Симпатии:
    2
    [​IMG]
    В теме используется языковой файл .po возможно причина в нём, но чем его редактировать?
     
  2. E-Rix

    E-Rix Постоялец

    Регистр.:
    16 янв 2009
    Сообщения:
    78
    Симпатии:
    35
  3. efs

    efs SEO оптимизатор дискрипторов одностраничных сайтов

    Moderator
    Регистр.:
    20 ноя 2009
    Сообщения:
    825
    Симпатии:
    475
    похоже на вывод с использованием функции substr, а она с утф8 работает некорректно (режет посреди символа). заменить на mb_substr с необходимыми параметрами
     
    recasher2k12 нравится это.
  4. saab

    saab Постоялец

    Регистр.:
    22 янв 2010
    Сообщения:
    74
    Симпатии:
    39
    Код:
    php_value mbstring.func_overload 7
    php_value mbstring.internal_encoding UTF-8
     
  5. ggnk

    ggnk

    Регистр.:
    30 ноя 2008
    Сообщения:
    224
    Симпатии:
    20
    покажи кусок кода ответственный за вывод анонса. Я так понимаю это в сайдбаре у тебя? если да то можно и целиком файл скинуть. а в идеале код вывода и код из functions.php
     
  6. levati

    levati Постоялец

    Регистр.:
    2 апр 2007
    Сообщения:
    104
    Симпатии:
    22
    Проблема действительно не в .po, а в подрезке по utf-8.

    Вот скрипт подрезки, который использую я:
    PHP:
    function cut_str($string$len$wordsafe true$dots false) {
    $slen strlen($string);
    if (
    $slen <= $len) {return $string;}
    if (
    $wordsafe) {
    $end $len;
    while ((
    $string[--$len] != ' ') && ($len 0)) {};
    if (
    $len == 0) {$len $end;}
    }
    if ((
    ord($string[$len]) < 0x80) || (ord($string[$len]) >= 0xC0)) {
    return 
    substr($string0$len) . ($dots ' ...' '');}
    while (--
    $len >= && ord($string[$len]) >= 0x80 && ord($string[$len]) < 0xC0) {};
    return 
    substr($string0$len) . ($dots ' ...' '');
    }
    $string - исходная строка,
    $len - длина выходной строки в символах,
    $wordsafe - оставлять полные слова(true) или обрезать строго до заданного количества символов,
    $dots - подстановка многоточия после обрезки.

    Вставь в functions.php - и рули.;)
     
  7. Andipas

    Andipas Постоялец

    Регистр.:
    5 дек 2007
    Сообщения:
    130
    Симпатии:
    92
    Вырезаем по словам. Входные параметры: text - текст и numOfWords - кол-во слов, которое хотим отобразить
    function truncate($text, $numOfWords = 10){
    if($numOfWords){
    $text = strip_tags($text, '<br/>');
    $text = str_replace(array("\r", "\n"), '', $text);

    $lenBefore = strlen($text);
    if($numOfWords){
    if(preg_match("/(\S+\s*){0,$numOfWords}/", $text, $match))
    $text = trim($match[0]);
    if(strlen($text) != $lenBefore){
    $text .= '...';
    }
    }
    }

    return $text;
    }


    и аналог substr:
    function utf8_substr($str, $from, $len) {
    return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $from . '}' .
    '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $len . '}).*#s', '$1', $str);
    }
     
Статус темы:
Закрыта.