Запрет множественных знаков препинания.

У вас есть идея для расширения функциональности phpBB 3.0.x? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Закрыто
romeo_piter
phpBB 2.0.15
Сообщения: 1033
Зарегистрирован: 02.04.2009 17:28
Благодарил (а): 168 раз
Поблагодарили: 20 раз

Запрет множественных знаков препинания.

Сообщение romeo_piter » 28.05.2011 16:44

Достали троеточия, пятиточия и прочее аналогичное.

Автоцензор не помогает, т.к. он заменяет только отдельностоящие словосочетания символов.
А например, в подобном варианте:
Привет...как дела?????
Заменить он ничего не сможет.
Может, кто-то встречал подобный мод или есть другие решения?

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

Re: Запрет множественных знаков препинания.

Сообщение rxu » 30.05.2011 21:00

romeo_piter
Ну вот, к примеру:

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

OPEN
includes/functions_content.php

FIND
	// We moved the word censor checks in here because we call this function quite often - and then only need to do the check once

BEFORE, ADD
	$list = array('.', '?');
	$text = preg_replace(array_map(create_function('$key', 'return "#" . preg_quote($key) . "{2,}#";'), $list), $list, $text);
В добавленном фрагменте есть массив $list = array('.', '?');, который можно заполнить/дополнить знаками, повторение которых (2 и более штук) надо убрать.
Изображение

romeo_piter
phpBB 2.0.15
Сообщения: 1033
Зарегистрирован: 02.04.2009 17:28
Благодарил (а): 168 раз
Поблагодарили: 20 раз

Re: Запрет множественных знаков препинания.

Сообщение romeo_piter » 31.05.2011 19:43

А реально ли сделать, чтобы замена была избирательна?

Т.е. например есть раздел "Флуд" c forum_id=9 и надо исключить этот форум из замены.

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

Re: Запрет множественных знаков препинания.

Сообщение rxu » 31.05.2011 20:05

Реально.

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

OPEN
includes/functions_content.php

FIND
	static $censors;

BEFORE, ADD
	global $forum_id;

FIND
	// We moved the word censor checks in here because we call this function quite often - and then only need to do the check once

BEFORE, ADD
	if (isset($forum_id) && $forum_id != 9)
	{
		$list = array('.', '?');
		$text = preg_replace(array_map(create_function('$key', 'return "#" . preg_quote($key) . "{2,}#";'), $list), $list, $text);
	}
Изображение

romeo_piter
phpBB 2.0.15
Сообщения: 1033
Зарегистрирован: 02.04.2009 17:28
Благодарил (а): 168 раз
Поблагодарили: 20 раз

Re: Запрет множественных знаков препинания.

Сообщение romeo_piter » 31.05.2011 21:01

И можно ещё небольшую глупость выяснить. :oops:
В ситуации когда имеет место замена можно ли добавить пробел в конце замененного знака.
Поясню. Имеем.
Привет...мне пофиг на правила орфографии!!!
Заменяем на
Привет._мне пофиг на правила орфографии!_
где _ - это пробел

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

Re: Запрет множественных знаков препинания.

Сообщение rxu » 01.06.2011 16:28

romeo_piter
В принципе, можно задавать в массиве значения с пробелом в конце, например $list = array('. ', '? ');, а вместо preg_quote($key) написать preg_quote(rtrim($key)).
Изображение

romeo_piter
phpBB 2.0.15
Сообщения: 1033
Зарегистрирован: 02.04.2009 17:28
Благодарил (а): 168 раз
Поблагодарили: 20 раз

Re: Запрет множественных знаков препинания.

Сообщение romeo_piter » 01.06.2011 17:16

Просто шикарно получилось.
Думаю, имеет смысл поставить подобное на всех форумах )

Если вы ответите ещё на один небольшой вопрос - буду счастлив беспредельно.
Можно ли добавить после этой функции ещё одну, которая будет осуществлять проверку на заглавные вначале предложений и пробелы перед началом новых предложений.

1. Самый первая буква в сообщении - всегда заглавная.
2. Если цензор видит . ! ?после них пробел или несколько и после них прописная буква, то эта прописная меняется на заглавную, если эти же знаки но пробела нет, то добавляется пробел и буква меняется на заглавную

Пример сообщения
привет.....как дела?????
Сейчас это уже исправляется на:
привет. как дела?
А в идеале хочется получить:
Привет. Как дела?
Второй пример сообщения.
привет.как дела?????
Сейчас исправляется на
привет.как дела?
Хочется видеть:
Привет. Как дела?



И подскажите, значима ли нагрузка от введения этх поправок с точки зрения времени загрузки страницы.

Добавлено спустя 33 минуты 44 секунды:
И ещё забыл, можно ли это всё сотворить не в цензоре, а чтобы сообщение записывалось в БД уже в измененном виде.

Призрак Поручика 2
phpBB 1.0.0
Сообщения: 2
Зарегистрирован: 30.05.2011 18:42
Забанен: Бессрочно

Re: Запрет множественных знаков препинания.

Сообщение Призрак Поручика 2 » 01.06.2011 17:53

1. Нагрузки нет.
2. Тогда вынести весь код в message_parser.php или прописать в submit_post

Призрак Поручика 2
phpBB 1.0.0
Сообщения: 2
Зарегистрирован: 30.05.2011 18:42
Забанен: Бессрочно

Re: Запрет множественных знаков препинания.

Сообщение Призрак Поручика 2 » 02.06.2011 22:24

То, что ты хочешь видеть и в идеале получить, тянет чуть ли не на синтаксический разбор текста, просто парсингом или регулярными выражениями можно исправлять несложные тексты, типа приведённых тобой.

romeo_piter
phpBB 2.0.15
Сообщения: 1033
Зарегистрирован: 02.04.2009 17:28
Благодарил (а): 168 раз
Поблагодарили: 20 раз

Re: Запрет множественных знаков препинания.

Сообщение romeo_piter » 02.06.2011 22:48

При использовании изменений из начала темы точки режутся при просмотре тем (viewtopic.php), но в выдаче встроенного поиска (search.php) он остаются, правльно ли я понимаю, что автоцензор не работает в поиске?

drugold
phpBB 1.4.2
Сообщения: 72
Зарегистрирован: 20.07.2010 21:07
Откуда: СССР
Благодарил (а): 6 раз
Поблагодарили: 8 раз
Контактная информация:

Re: Запрет множественных знаков препинания.

Сообщение drugold » 22.12.2014 21:44

Подскажите, а как добавить поддержку символов "...", "!..", "?.." ? А остальные знаки что бы были по-одному.
VDS: OpenVZ [Intel(R) Xeon(R) CPU E5645 @ 2.40GHz 1596.000 Mhz X 4 / 4096 MB / 120 GB]
HTTPd: Apache/2.2.22 (Debian)
PHP: 5.4.4-14+deb7u12
MySQL(i): 5.5.33-0+wheezy1
---
Основной: phpBB 3.0.14
Тестовый: phpBB 3.1.8

Закрыто

Вернуться в «Запросы модов для phpBB 3.0.x»