Всем привет. Возможно кому-то пригодится следующая информация (параллельно отписываюсь в ТП)
Столкнулся с тем, что preg_replace_callback искавший html ссылки для замены в контенте страницы (OnEndBufferContent) возвращает NULL на некоторых страницах при использовании блогов или в темах форума. В preg last error при этом числился PREG_BAD_UTF8_ERROR.
Если открыть тему форума не авторизованным пользователем, то все ок. Для авторизованного пользователя занялся поиском.
Сравнение проблемного контента страницы с $contentNew = iconv('utf-8', 'utf-8//IGNORE', $content); указало на 1 строку:
поиск по исходникам вывел меня на файл: /bitrix/modules/main/lang/ru/js_core_translit.php
в коде которого можно наблюдать:
Если я правильно понял, то цель была захвать 6 символов украинского(?) языка (і,І,ї,Ї,ґ,Ґ), но в файл просто встроили коды win1251. utf-8 ведь никто не использует...
Заменил на:
p.s.: полезная штука:
Столкнулся с тем, что preg_replace_callback искавший html ссылки для замены в контенте страницы (OnEndBufferContent) возвращает NULL на некоторых страницах при использовании блогов или в темах форума. В preg last error при этом числился PREG_BAD_UTF8_ERROR.
Если открыть тему форума не авторизованным пользователем, то все ок. Для авторизованного пользователя занялся поиском.
Сравнение проблемного контента страницы с $contentNew = iconv('utf-8', 'utf-8//IGNORE', $content); указало на 1 строку:
| Код |
|---|
-<sc ript type="text/javascript">
(window.BX||top.BX).message({'YANDEX_KEY':''});
(window.BX||top.BX).message({'TRANS_FROM':'......Ф,Х,Ц,Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я,э,э,э,э,э,э','TRANS_TO':....
+<sc ript type="text/javascript">
(window.BX||top.BX).message({'YANDEX_KEY':''});
(window.BX||top.BX).message({'TRANS_FROM':'......Ф,Х,Ц,Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я,,,,,,','TRANS_TO':'..... |
в коде которого можно наблюдать:
| Код |
|---|
<? $MESS["TRANS_FROM"] = "а,б,в,г,...,Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я,\xb3,\xb2,\xbf,\xaf,\xb4,\xa5"; ?> |
Заменил на:
| Код |
|---|
.....Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я,\xD1\x96,\xD0\x86,\xD1\x97,\xD0\x87,\xD2\x91,\xD2\x90"; |
p.s.: полезная штука:
Не бойтесь делать того что не умеете. Ковчег построил любитель...Профессионалы построили Титаник