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

Проблемы с установкой или работой 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
Зарегистрирован: 24.05.2006 21:46

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

Сообщение Lokust » 10.01.2008 13:10

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

Пример:
"Употреблять" заменяется на " Употреcensored"

piatachki
phpBB 1.4.2
Сообщения: 56
Зарегистрирован: 09.12.2007 15:36
Откуда: Москва
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Сообщение piatachki » 10.01.2008 13:42

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

Только в таком случае весь мат будет проходить, потому что на любое "выражение" я могу столько словоформ придумать :roll:
This is a man's world (c)

Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Зарегистрирован: 12.05.2005 17:25
Откуда: Оренбург (Южный Урал)
Благодарил (а): 24 раза
Поблагодарили: 54 раза
Контактная информация:

Сообщение Поручик » 10.01.2008 13:55

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

наш форум http://forum.aeroion.ru/cat1.html

piatachki
phpBB 1.4.2
Сообщения: 56
Зарегистрирован: 09.12.2007 15:36
Откуда: Москва
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Сообщение piatachki » 10.01.2008 16:29

Поручик
А в смысле он должен и без пробелов в идеале работать?
This is a man's world (c)

Аватара пользователя
crash
Former team member
Сообщения: 6517
Зарегистрирован: 07.07.2004 17:12
Откуда: Бердск
Поблагодарили: 15 раз
Контактная информация:

Сообщение crash » 10.01.2008 16:37

в идеале должен работать правильно, сейчас он не работает так как надо
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14328
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 343 раза
Поблагодарили: 1491 раз
Контактная информация:

Сообщение rxu » 10.01.2008 16:56

Если кто-то очень хорошо дружит с 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
Зарегистрирован: 24.05.2006 21:46

Сообщение Lokust » 10.01.2008 19:45

piatachki писал(а):Пробелы ставить не пробовали перед и после стоп-слова?
Только в таком случае весь мат будет проходить, потому что на любое "выражение" я могу столько словоформ придумать
Лично у меня фишка с пробелами тоже не проходит... они просто не сохраняются, как я понял

Аватара пользователя
nissin
phpBB 3.0.3
Сообщения: 2172
Зарегистрирован: 16.12.2007 14:01
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 335 раз
Контактная информация:

Сообщение nissin » 18.01.2008 20:16

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

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

setlocale(LC_ALL,'ru_RU.UTF-8');
если конечно эта локаль есть у хостера.
Всё повторяется. nurlan.info

Lokust
phpBB 1.4.4
Сообщения: 119
Зарегистрирован: 24.05.2006 21:46

Сообщение Lokust » 18.01.2008 22:22

nissin писал(а):возможно поможет вставка вызова
А где именно это вставить?

Аватара пользователя
nissin
phpBB 3.0.3
Сообщения: 2172
Зарегистрирован: 16.12.2007 14:01
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 335 раз
Контактная информация:

Сообщение nissin » 19.01.2008 0:16

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

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

				$censors['match'][] = '#(?<!\S)(' . str_replace('\*', '\S*?', preg_quote($row['word'], '#')) . ')(?!\S)#iu';
и не забыть почистить кэш (либо просто удалить /cache/data_word_censors.php).
Всё повторяется. nurlan.info

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14328
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 343 раза
Поблагодарили: 1491 раз
Контактная информация:

Сообщение rxu » 19.01.2008 6:09

nissin
А со свойствами юникода, например \p{L} и подобными, не пробовали поиграть?
Изображение

Аватара пользователя
nissin
phpBB 3.0.3
Сообщения: 2172
Зарегистрирован: 16.12.2007 14:01
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 335 раз
Контактная информация:

Сообщение nissin » 19.01.2008 7:36

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

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

				$censors['match'][] = '#(?<!\pL)(' . str_replace('\*', '\pL*?', preg_quote($row['word'], '#')) . ')(?!\pL)#iu';
Последний раз редактировалось nissin 19.01.2008 7:59, всего редактировалось 1 раз.
Всё повторяется. nurlan.info

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14328
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 343 раза
Поблагодарили: 1491 раз
Контактная информация:

Сообщение rxu » 19.01.2008 7:40

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

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

// Enforce ASCII only string handling
setlocale(LC_CTYPE, 'C');
Вот если её здесь поменять, то будет работать и с "\w".
Изображение

Аватара пользователя
nissin
phpBB 3.0.3
Сообщения: 2172
Зарегистрирован: 16.12.2007 14:01
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 335 раз
Контактная информация:

Сообщение nissin » 19.01.2008 8:04

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

А там менять нельзя, функции UTF8 перестанут нормально работать.
Всё повторяется. nurlan.info

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14328
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 343 раза
Поблагодарили: 1491 раз
Контактная информация:

Сообщение rxu » 19.01.2008 8:08

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

Закрыто

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