Решение проблемы с preg_match_all при большом кол. смайликов

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
SoaringHawk
phpBB 1.0.0
Сообщения: 1
Стаж: 18 лет 3 месяца

Решение проблемы с preg_match_all при большом кол. смайликов

Сообщение SoaringHawk »

Наверняка проблема у едениц :) ...но все же.

Если добавить в форум очень много смайликов, да еще и с длинными именами, может возникнуть проблема т.к. у паттерна (регулярок) в пхп длинна строки ограничена.

И ежели кто с этим столкнулся вот простое решение:
Файл: "<корень_форума>/includes/message_parser.php"
Строка: 1302

Заменить этот код:

Код: Выделить всё

$num_matches = preg_match_all('#' . implode('|', $match) . '#', $this->message, $matches);
unset($matches);
на этот:

Код: Выделить всё

$num_matches = 0;
foreach(array_chunk($match, 100) as $array_of_match)
{
$num_matches += preg_match_all('#' . implode('|', $array_of_match) . '#', $this->message, $matches);
unset($matches);
}	

Вернуться в «Поддержка phpBB 3.0.х»