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

Спецсимволы и автоцензор.

Проблемы с установкой или работой phpBB 2.0.x? Ищите ответы здесь!
Аватара пользователя
/DiOs
Former team member
Сообщения: 1139
Стаж: 18 лет 2 месяца
Откуда: Ленинград

Сообщение /DiOs »

strpos($username,'-')==1
И если я неправ, пусть старшие товарищи поправят меня
Ulfr
phpBB 1.2.1
Сообщения: 25
Стаж: 17 лет 9 месяцев

Сообщение Ulfr »

Есть ли возможность заставить автоцензор менять нектоорые наборы символов на спецсимволы?
Например:
-- на —,
<< и >> на « и »,
(с) на © и т.д.

буквенно-цифровые сочетания он меняет прекрасно, и русские и английские, а эти не хочет...
Аватара пользователя
/DiOs
Former team member
Сообщения: 1139
Стаж: 18 лет 2 месяца
Откуда: Ленинград

Сообщение /DiOs »

Ulfr писал(а):буквенно-цифровые сочетания он меняет прекрасно, и русские и английские, а эти не хочет...
Это поведение об'ясняется следующей строкой из функции оbtain_word_list

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

      $orig_word[] = '#\b(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')\b#i';
"Скобки" \b добавляются к поисковому слову из таблицы для того, чтобы потом функция preg_replace искала в тексте только полные слова, а не их части. Т.е. чтобы при прописанной замене "и" на "and" слово "пример" не становилось словом "прandмер".

Добавлено спустя 1 минуту 45 секунд:

А символы типа "-" не являются для регекспов алфавитно-цифровыми и не означают границу слова. Потому их как "слово в тексте" php их и не находит.

Добавлено спустя 1 минуту 39 секунд:

Можете у себя в этой функции (прописана в includes/functions.php) на время выкинуть оба \b -- и вы прекрасно увидите свои замены.
И если я неправ, пусть старшие товарищи поправят меня
Ulfr
phpBB 1.2.1
Сообщения: 25
Стаж: 17 лет 9 месяцев

Сообщение Ulfr »

/DiOs писал(а):Можете у себя в этой функции (прописана в includes/functions.php) на время выкинуть оба \b -- и вы прекрасно увидите свои замены.
Но в этом случае остальные правила автоцензора будут работать некоректно? Либо одно либо другое...
Спасибо за ответ.
Feeling
phpBB 1.2.1
Сообщения: 21
Стаж: 19 лет 2 месяца

Подскажите где подправить автоцензор (НЕ про руссский язык)

Сообщение Feeling »

Подскажите пожалуйста, где можно подправить автоцензор, чтобы он заменял не все слово целиком, а только ЧАСТЬ слова. Покопалась в скриптах - не нашла где это сделать :((( Нужно только в тексте сообщения (в других местах он у меня совсем отключен). Чтобы он не трогал окончания слов :?
Аватара пользователя
/DiOs
Former team member
Сообщения: 1139
Стаж: 18 лет 2 месяца
Откуда: Ленинград

Сообщение /DiOs »

http://phpbbguru.net/community/viewtopi ... 255#104255

там я об'яснил, где и почему сделано так, как сделано, как изменить и что из этого получится.
И если я неправ, пусть старшие товарищи поправят меня
Feeling
phpBB 1.2.1
Сообщения: 21
Стаж: 19 лет 2 месяца

Сообщение Feeling »

Т.е., если я правильно поняла, то нужно просто убрать \b в начале или в конце, чтобы автоцензор заработал только на начальную или конечную часть слова, так?

Что из этого может получиться - и примерно осознаю, но у меня будет на форуме специфический словарь терминов и думаю, что проблем особых быть не должно... в крайнем случае - подумаю как их решить (возможно можно будет \b задавать в каждой переменной отдельно, если будет в этом необходимость?) или использовать еще какой-либо спецсимвол...
Аватара пользователя
/DiOs
Former team member
Сообщения: 1139
Стаж: 18 лет 2 месяца
Откуда: Ленинград

Сообщение /DiOs »

Feeling писал(а):Т.е., если я правильно поняла, то нужно просто убрать \b в начале или в конце, чтобы автоцензор заработал только на начальную или конечную часть слова, так?
Чтобы ему не нужно было для исправления (изменения) слово, а годилась бы любая часть потока символов.
И если я неправ, пусть старшие товарищи поправят меня
Feeling
phpBB 1.2.1
Сообщения: 21
Стаж: 19 лет 2 месяца

Сообщение Feeling »

Спасибо за наводку! Покопалась в документациях и разобралась как все это работает. Раньше было понятно, что для чего-то /b на концах слова прибавляется, но не совсем было понятно, что это спецсимвол.

Расскажу для тех, кому интересно, что я с этим сделала (мало ли вдруг кому понадобится):

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

if ( preg_match ('/^\S*\%$/', $row['word'] ) ) {
			$row['word'] = str_replace("%", "", $row['word']);
			$orig_word[] = '#\b(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')\B#i';
} else {
			$orig_word[] = '#\b(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')\b#i';
}
В ключевые слова, которые нужно склонять я добавляю в конец символ "%", а потом уже скрипт проверяет и обрабатывает слово в зависимости от того - есть там этот символ или нет. По умолчанию обрабатывается как и раньше, чтобы при апгрейдах форума косяков не повылазило.

З.Ы. Правда в тех случаях, когда слово может использоваться с окончанием или без - приходится в словарь вбивать два варианта (например - "администратор" и "администратор%"), т.к. если окончание у слова отсутствует и в конце строки стоит "\B" - автоцензор этого не понимает. :( Хотя мне и в этом случае уж лучше два раза слово вбить, чем 5-10 его различных написаний - всяко экономия.
siemens-klub
phpBB 1.4.0
Сообщения: 36
Стаж: 17 лет 3 месяца
Откуда: Ярославль

Сообщение siemens-klub »

а $ на $$заменить нуна.как чтоб без косяков?у меня не получилось..
Аватара пользователя
/DiOs
Former team member
Сообщения: 1139
Стаж: 18 лет 2 месяца
Откуда: Ленинград

Сообщение /DiOs »

siemens-klub писал(а):а $ на $$заменить нуна.как чтоб без косяков?у меня не получилось..
Вы предлагаете мне еще раз написать то, что я уже написал? Так если вы не хотите читать, вам это не поможет все равно... Feeling почему-то помогло с первого раза.
И если я неправ, пусть старшие товарищи поправят меня
siemens-klub
phpBB 1.4.0
Сообщения: 36
Стаж: 17 лет 3 месяца
Откуда: Ярославль

Сообщение siemens-klub »

почемуто в личке автоцензор ссылок работает,а в остальном форуме нет.что делать?

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