Уже таких ошибок около 20 идут подряд
Warning: strpos() [<a href='function.strpos'>function.strpos</a>]: Empty delimiter Line: 499 in file /var/www/u1421030/data/www/rai-rzn.ru/classes/others/class_editor.php
URL: /admin.php?section=modules&key=8fe392d1814d830c3f00ca524d969169&module=news&save=new
Date: 2011-01-29 22:16:09
IP: 86.110.177.81
Warning: strpos() [<a href='function.strpos'>function.strpos</a>]: Empty delimiter Line: 499 in file /var/www/u1421030/data/www/rai-rzn.ru/classes/others/class_editor.php
URL: /admin.php?section=modules&key=8fe392d1814d830c3f00ca524d969169&module=news&save=4
Date: 2011-01-29 22:18:06
IP: 86.110.177.81
Alexander
2011-01-30, 16:08
LEXSOR, это очень-очень вредная ошибка. Можете определить, на какой новости они проявляется и предоставить мне данные для доступа для ее решения?
самое интересное что новость на сайте 1 всего. вам на мыло данные скинуть?
Скинул данные на support@eleanor-cms.ru
Easy-Web
2011-02-09, 11:54
Вроде понял. Происходит баг при замене смайлов. Ошибка происходит опять таки при обработке текстовых переменных. Причем уверен что этот баг вылазит в только с UTF8 , из за непредсказуемости строковых функций при работе с многобайтными кодировками. Потому что если бы в коде была бы ошибка, логи вылезали бы гораздо чаще.
Вообще эта ошибка конкретно для функции strpos говорит о том что пуст второй параметр
Посмотрев на эту констрюкшн мы видим что пустым этот параметр становится от пустого возвращенного значения многобайтной функции mb_substr. В свою очередь, пустое значение скорее всего появляется при использовании неверно расчитанной длины с помощью функции mb_strlen. Раньше приходилось встречаться с неверно расчитанной длиной для некоторых строк, причем никакой закономерности получить не удалось. Поэтому же гонит в UTF и поиск и подсветка найденных слов.
Захотелось ее упростить и вроде получилось.
if(($position===0 or strpos($stop_near,mb_substr($text,$position-1,1))===false)
and (mb_substr($text,$position+$klen,1)=='' or strpos($stop_near,mb_substr($text,$position+$klen,1))===false))
Заменяем в others/class_editor.php
в районе 500 строки
вот этот кусок
if(($position===0 or strpos($stop_near,mb_substr($text,$position-1,1))===false) and (mb_substr($text,$position+$klen,1)=='' or strpos($stop_near,mb_substr($text,$position+$klen,1))===false))
{
$text=substr_replace($text,$v,$position,$klen);
$vlen=mb_strlen($v)-$klen;
$sm_pos+=$vlen;
/*$arr_dovesok[$i_near]=($i_near>0 and isset($arr_dovesok[$i_near])) ? $arr_dovesok[$i_near]+$vlen : $vlen;*/
++$sm_cnt;
}
else
$sm_pos+=$klen;
на этот кусок:
$text=substr_replace($text,$v,$position,$klen);
$vlen=mb_strlen($v)-$klen;
$sm_pos+=$vlen;
++$sm_cnt;
И все работает прекрасно без логов и без багов. В данный момент проверяется на двух активно работающих сайтах.
Alexander
2011-02-10, 1:51
Easy-Web, в архиве RC5 лежит уже давненько обновленная и избавленная от этого бага. Ваше решение немного некорректо, ибо допускает "наглую" замену смайлами. Вот к примеру на сайте нужно написать форумулу x=(a+b)/z , при этом участок =( ни в коем случае не должен стать смайлом
. Посмотрите моё решение в текущей версии RC5.
Ну раз так, то надо сделать чтобы и url не воспринимался как длинная строка и не разбивался на части. А то в прошлый раз, вы тоже хотели просто удалить фичу:
Цитата
Все решается банальным удалением этого алгоритма.
>
http://www.camonitor.com/admin.php?...p;module=blocks
>
> Когда это происходит текст или не отображается или отображается вместе
> с bb-кодами
>
> Решается проблема установкой "Максимальная длина одного слова" в
> максимально большое значение (200-300 символов). Но и это до конца не
> решит проблему, ведь бывают очень длинные url, скорее всего надо при
> вставке тэгов сделать исключение для URL-ов
> или преобразовывать в
сокращенный url
Alexander
2011-02-10, 14:28
Цитата (Easy-Web @ 2024-04-25 02:53)
Ну раз так, то надо сделать чтобы и url не воспринимался как длинная строка и не разбивался на части.
Эту проблему мы отдали на фиксинг в css.
Easy-Web
2011-02-10, 17:29
Цитата (Alexander @ 2011-02-10, 17:28)
Эту проблему мы отдали на фиксинг в css.
Весьма достойное решение. Класс editor просто перегружен кодом, условиями и преобразованиями, которые могут многократно пересекаться и конфликтовать.