Автоцензор, исправление автоцензора

Проблемы с установкой или работой 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) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Lokust
phpBB 1.4.4
Сообщения: 119
Стаж: 20 лет 4 месяца

Автоцензор, исправление автоцензора

Сообщение Lokust »

Никто не придумал еще, как сделать чтобы автоцензор заменял отельные слова, а не каверкал бы их, выдирая внутри них какую-либо часть?

Пример:
"Употреблять" заменяется на " Употреcensored"
piatachki
phpBB 1.4.2
Сообщения: 56
Стаж: 18 лет 9 месяцев
Откуда: Москва
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Сообщение piatachki »

Пробелы ставить не пробовали перед и после стоп-слова?

Только в таком случае весь мат будет проходить, потому что на любое "выражение" я могу столько словоформ придумать :roll:
This is a man's world (c)
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 21 год 4 месяца
Откуда: Оренбург (Южный Урал)
Благодарил (а): 24 раза
Поблагодарили: 54 раза

Сообщение Поручик »

А вы в курсе, что в Олимпусе автоцензор для нелатиницы глючный, и когда пофиксят, хз, а по сути, это дело отдали на откуп национальным саппортам?
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html
piatachki
phpBB 1.4.2
Сообщения: 56
Стаж: 18 лет 9 месяцев
Откуда: Москва
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Сообщение piatachki »

Поручик
А в смысле он должен и без пробелов в идеале работать?
This is a man's world (c)
Аватара пользователя
crash
Former team member
Сообщения: 6517
Стаж: 22 года 2 месяца
Откуда: Бердск
Поблагодарили: 15 раз

Сообщение crash »

в идеале должен работать правильно, сейчас он не работает так как надо
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17273
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 633 раза
Поблагодарили: 2413 раз

Сообщение rxu »

Если кто-то очень хорошо дружит с PRCE, поправьте следующую регулярку в includes/cache.php function obtain_word_list() так, чтобы с мультибайтом работало

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

				$censors['match'][] = '#(?<!\w)(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')(?!\w)#i';
Сразу скажу, что простое добавление модификатора u не спасает.
Изображение
Lokust
phpBB 1.4.4
Сообщения: 119
Стаж: 20 лет 4 месяца

Сообщение Lokust »

piatachki писал(а):Пробелы ставить не пробовали перед и после стоп-слова?
Только в таком случае весь мат будет проходить, потому что на любое "выражение" я могу столько словоформ придумать
Лично у меня фишка с пробелами тоже не проходит... они просто не сохраняются, как я понял
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Сообщение nissin »

возможно поможет вставка вызова

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

setlocale(LC_ALL,'ru_RU.UTF-8');
если конечно эта локаль есть у хостера.
Lokust
phpBB 1.4.4
Сообщения: 119
Стаж: 20 лет 4 месяца

Сообщение Lokust »

nissin писал(а):возможно поможет вставка вызова
А где именно это вставить?
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Сообщение nissin »

нашёл попроще решение.
заменить строчку которую rxu несколько постов выше написал на

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

				$censors['match'][] = '#(?<!\S)(' . str_replace('\*', '\S*?', preg_quote($row['word'], '#')) . ')(?!\S)#iu';
и не забыть почистить кэш (либо просто удалить /cache/data_word_censors.php).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17273
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 633 раза
Поблагодарили: 2413 раз

Сообщение rxu »

nissin
А со свойствами юникода, например \p{L} и подобными, не пробовали поиграть?
Изображение
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Сообщение nissin »

Проверил, оказывается тоже работает.

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

				$censors['match'][] = '#(?<!\pL)(' . str_replace('\*', '\pL*?', preg_quote($row['word'], '#')) . ')(?!\pL)#iu';
Последний раз редактировалось nissin 19.01.2008 4:59, всего редактировалось 1 раз.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17273
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 633 раза
Поблагодарили: 2413 раз

Сообщение rxu »

nissin писал(а):даже указание локали ru_RU.UTF-8 ему не помогает.
И не поможет, ибо в includes/utf/utf_tools.php локаль переопределяется заново на

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

// Enforce ASCII only string handling
setlocale(LC_CTYPE, 'C');
Вот если её здесь поменять, то будет работать и с "\w".
Изображение
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Сообщение nissin »

Я тоже так думал. Но не помогает шабака.
Чукча не дурак, он вызов setlocale перед preg_replace поставил.
А после обратно локаль вернул.

А там менять нельзя, функции UTF8 перестанут нормально работать.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17273
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 633 раза
Поблагодарили: 2413 раз

Сообщение rxu »

Сейчас просто закомментировал, работает... Правда, не уверен, работают ли остальные функции UTF.
Насколько я понимаю, этот вызов setlocale вставлен для страховки, ибо некоторые локали ломают нормальную работу этих функций. Не уверен, что русская локаль относится к таковым ("ломающим").
Изображение

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