Захожу в магазин под покупателем и пишу отзыв"
упавыпьлазвыщлпимзсбди жхсмчяим
павпарпхщрлпазщлрьпа
р
апрплрзщпалрзпа
апрщрлщзвплрзщшвлр
прьвзрьлвьрщлвьр
прьпащлрьвщльрщлыве"
получаю в админке"
упавыпь�-�азвыщлп-имзсбди жхсмчяи�-�
павпар-пхщрлпа�-�щлрьпа
-р
апрпл�-�зщпалрз-па
апрщ�-�лщзвплр-зщшвлр
�-�рьвзрьл-вьрщлвь�-�
прьпащ-лрьвщль�-�щлыве"
в базе все норм,
проверял много раз, заметил, что если идет 8-ая буква подряд, то вылазит "�-�", это видно даже по приведенному тексту.
Решение:
в файле admin/rewievs.php есть "echo nl2br(tep_db_output(tep_break_string($rInfo->reviews_text, 15)));" 15 меняем на большее число(я взял 50).
Как я понимаю функция tep_break_string призвана разбивать дефисами длинные слова
файл admin\includes\functions\general.php
function tep_break_string($string, $len, $break_char = "-") {
$l = 0;
$output = '';
for ($i=0, $n=strlen($string); $i<$n; $i++) {
$char = substr($string, $i, 1);
if ($char != ' ') {
$l++;
} else {
$l = 0;
}
if ($l > $len) {
$l = 1;
$output .= $break_char;
}
$output .= $char;
}
return $output;
}
Почему "�-�" вылазит на 8-ой русской букве и как это исправить не знаю.
И еще, на сайте есть правый блок с отзывом, там тоже появляется "�-�":
В файле shop\includes\modules\boxes\bm_reviews.php находим $rand_review_text = tep_break_string(tep_output_string_protected($rand_review['reviews_text']), 15, '-<br />');
и ставим 30(чтоб блок как раз заполнялся).
Мое решение плохое и носит временый характер.