Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » MySQL » Как исправить Illegal argument to a regular expression при просмотре короткой новости?

Как исправить Illegal argument to a regular expression при просмотре короткой новости?


     09.02.2019    Все вопросы » MySQL    3821

вопрос
Здравствуйте, 100 лет не юзал DLE, сейчас поставил и при просмотре короткой новости ошибка MYSQL, предполагаю, что у меня последняя версия мускула 8.0 которая полностью не совместима с DLE, подскажите пожалуйста решение, нет возможности ждать фикса.

SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE category regexp '[[:<:]](2)[[:>:]]' AND approve=1 AND date < '2019-02-09 03:12:27' ORDER BY fixed desc, date DESC LIMIT 0,10


Как исправить Illegal argument to a regular expression при просмотре короткой новости?

4 комментария

dj-avtosh
PHP-developer

dj-avtosh - 11 февраля 2019 16:05 -

Скорее всего момент того, что в 8.0 юзается библиотека для регулярных выражений от Henry Spencer.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 11 февраля 2019 16:17 -

Попробуйте как вариант:

category regexp '[[:<:]](2)[[:>:]]'


заменить на:

FIND_IN_SET('2', category) > 0

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Artyom91
Юзер

Artyom91 - 12 февраля 2019 05:03 -

Спасибо, ошибка исчезла и всё загружает, это функционал мультикатегорий, в engine.php условие:

if ($config['allow_multi_category']) {


Кому не нужен этот функционал, можно отключить в конфиге.

slva2000
Юзер

slva2000 - 26 октября 2021 03:51 -

В php нужно заменить все вхождения указанных комбинаций на 4 обратных слеша + b.
Пример:
$where = "regexp '[[:<:]](" . $custom_category . ")[[:>:]]'";

Заменить на:
$where = "regexp '\\\\b(" . $custom_category . ")\\\\b'";


Чтобы автоматизировать процесс, нужно выполнить из шела следующую команду, изменив пути на свой:
# find /var/www/user/data/www/site.com/ -type f -name '*.php' | xargs sed -i  's/\[\[\:[<|>]\:\]\]/\\\\\\\\b/g'


Обращаю внимание - 4 косых черты, это результат экранирования (самоэкранирования). Иначе не работает.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх