Уважаемые пользователи!
Напоминаем, что с 7 ноября 2020 года phpBB Group прекращает поддержку phpBB версии 3.2.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2020 года.
С учетом этого, а также того, что версия 3.2.x больше не будет получать обновлений, за исключением связанных с проблемами безопасности
(только при их наличии и только до 7 ноября 2020 года), рекомендуется обновить конференции до версии 3.3.x.

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

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

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

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

Сообщение romeo_piter »

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

Автоцензор не помогает, т.к. он заменяет только отдельностоящие словосочетания символов.
А например, в подобном варианте:
Привет...как дела?????
Заменить он ничего не сможет.
Может, кто-то встречал подобный мод или есть другие решения?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 15477
Стаж: 15 лет 2 месяца
Откуда: Красноярск
Благодарил (а): 418 раз
Поблагодарили: 1854 раза

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

Сообщение rxu »

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
Стаж: 12 лет 4 месяца
Благодарил (а): 168 раз
Поблагодарили: 20 раз

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

Сообщение romeo_piter »

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

Т.е. например есть раздел "Флуд" c forum_id=9 и надо исключить этот форум из замены.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 15477
Стаж: 15 лет 2 месяца
Откуда: Красноярск
Благодарил (а): 418 раз
Поблагодарили: 1854 раза

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

Сообщение rxu »

Реально.

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

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
Стаж: 12 лет 4 месяца
Благодарил (а): 168 раз
Поблагодарили: 20 раз

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

Сообщение romeo_piter »

И можно ещё небольшую глупость выяснить. :oops:
В ситуации когда имеет место замена можно ли добавить пробел в конце замененного знака.
Поясню. Имеем.
Привет...мне пофиг на правила орфографии!!!
Заменяем на
Привет._мне пофиг на правила орфографии!_
где _ - это пробел
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 15477
Стаж: 15 лет 2 месяца
Откуда: Красноярск
Благодарил (а): 418 раз
Поблагодарили: 1854 раза

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

Сообщение rxu »

romeo_piter
В принципе, можно задавать в массиве значения с пробелом в конце, например $list = array('. ', '? ');, а вместо preg_quote($key) написать preg_quote(rtrim($key)).
Изображение
romeo_piter
phpBB 2.0.15
Сообщения: 1033
Стаж: 12 лет 4 месяца
Благодарил (а): 168 раз
Поблагодарили: 20 раз

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

Сообщение romeo_piter »

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

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

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

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



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

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

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

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

1. Нагрузки нет.
2. Тогда вынести весь код в message_parser.php или прописать в submit_post
Призрак Поручика 2
phpBB 1.0.0
Сообщения: 2
Стаж: 10 лет 2 месяца
Забанен: Бессрочно

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

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

То, что ты хочешь видеть и в идеале получить, тянет чуть ли не на синтаксический разбор текста, просто парсингом или регулярными выражениями можно исправлять несложные тексты, типа приведённых тобой.
romeo_piter
phpBB 2.0.15
Сообщения: 1033
Стаж: 12 лет 4 месяца
Благодарил (а): 168 раз
Поблагодарили: 20 раз

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

Сообщение romeo_piter »

При использовании изменений из начала темы точки режутся при просмотре тем (viewtopic.php), но в выдаче встроенного поиска (search.php) он остаются, правльно ли я понимаю, что автоцензор не работает в поиске?
drugold
phpBB 1.4.2
Сообщения: 72
Стаж: 11 лет
Откуда: СССР
Благодарил (а): 6 раз
Поблагодарили: 8 раз

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

Сообщение drugold »

Подскажите, а как добавить поддержку символов "...", "!..", "?.." ? А остальные знаки что бы были по-одному.
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»