• DONATE to NULLED!
    Вы можете помочь Форуму и команде, поддержать финансово.
    starwanderer - модератор этого раздела будет Вам благодарен!

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

Статус
В этой теме нельзя размещать новые ответы.

maste

Создатель
Регистрация
27 Мар 2010
Сообщения
30
Реакции
2
56201240941pm.jpg

В теме используется языковой файл .po возможно причина в нём, но чем его редактировать?
 
похоже на вывод с использованием функции substr, а она с утф8 работает некорректно (режет посреди символа). заменить на mb_substr с необходимыми параметрами
 
В теме используется языковой файл .po возможно причина в нём, но чем его редактировать?

покажи кусок кода ответственный за вывод анонса. Я так понимаю это в сайдбаре у тебя? если да то можно и целиком файл скинуть. а в идеале код вывода и код из functions.php
 
Проблема действительно не в .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($string, 0, $len) . ($dots ? ' ...' : '');}
while (--$len >= 0 && ord($string[$len]) >= 0x80 && ord($string[$len]) < 0xC0) {};
return substr($string, 0, $len) . ($dots ? ' ...' : '');
}

$string - исходная строка,
$len - длина выходной строки в символах,
$wordsafe - оставлять полные слова(true) или обрезать строго до заданного количества символов,
$dots - подстановка многоточия после обрезки.

Вставь в functions.php - и рули.;)
 
Вырезаем по словам. Входные параметры: 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;
}[/spoil]

и аналог substr:
[spoil]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);
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху