CMS Eleanor - Поиск
Полная версия этой страницы: Официальный форум Eleanor CMS » Ошибка Warning: strpos() [<a href='function.strpos'>function.strpos</a>]
Официальный форум Eleanor CMS » Поддержка пользователей системы Eleanor CMS » Первые шаги » Разбор log ошибок
LEXSOR
Уже таких ошибок около 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
LEXSOR, это очень-очень вредная ошибка. Можете определить, на какой новости они проявляется и предоставить мне данные для доступа для ее решения?
LEXSOR
самое интересное что новость на сайте 1 всего. вам на мыло данные скинуть?
Alexander
Да, если можно.
LEXSOR
Скинул данные на support@eleanor-cms.ru
Easy-Web
Вроде понял. Происходит баг при замене смайлов. Ошибка происходит опять таки при обработке текстовых переменных. Причем уверен что этот баг вылазит в только с 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
Easy-Web, в архиве RC5 лежит уже давненько обновленная и избавленная от этого бага. Ваше решение немного некорректо, ибо допускает "наглую" замену смайлами. Вот к примеру на сайте нужно написать форумулу x=(a+b)/z , при этом участок =( ни в коем случае не должен стать смайлом :( . Посмотрите моё решение в текущей версии RC5.
Easy-Web
Ну раз так, то надо сделать чтобы и url не воспринимался как длинная строка и не разбивался на части. А то в прошлый раз, вы тоже хотели просто удалить фичу:


Цитата
Все решается банальным удалением этого алгоритма.

> http://www.camonitor.com/admin.php?...p;module=blocks
>
> Когда это происходит текст или не отображается или отображается вместе
> с bb-кодами
>
> Решается проблема установкой "Максимальная длина одного слова" в
> максимально большое значение (200-300 символов). Но и это до конца не
> решит проблему, ведь бывают очень длинные url, скорее всего надо при
> вставке тэгов сделать исключение для URL-ов
> или преобразовывать в сокращенный url



Alexander
Цитата (Easy-Web @ 2021-11-28 21:54)
Ну раз так, то надо сделать чтобы и url не воспринимался как длинная строка и не разбивался на части.

Эту проблему мы отдали на фиксинг в css.
Easy-Web
Цитата (Alexander @ 2011-02-10, 17:28)
Эту проблему мы отдали на фиксинг в css.


Весьма достойное решение. Класс editor просто перегружен кодом, условиями и преобразованиями, которые могут многократно пересекаться и конфликтовать.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.