Тюнинг автоцензора

Board index phpBBex 1.x Предложения и пожелания

Description: В phpBBex 1.x чего-то не хватает? Напишите об этом здесь, и мы постараемся исправиться.
Forum rules: Одна тема — один запрос новой возможности. Обязательно формируйте внятный заголовок, максимально отражающий суть вашей идеи. Также приведите примеры, где предлагаемая вами возможность будет актуальна.
Moderator: Поддержка

Post #1by Dr.Death » 15.09.2014, 13:20

Немного поковырял код автоцензора, чтобы можно было заменять слова с разными началами и окончаниями с их сохранением
Code: Select all
бля* -> бл.$2
*пизд* -> $2п.зд$3

Code: Select all
function get_censor_preg_expression($word, $use_unicode = true)   

Code: Select all
// Replace asterisk(s) inside the pattern, at the start and at the end of it with regexes
$word = preg_replace(array('#(?<=[\p{Nd}\p{L}_])\*+(?=[\p{Nd}\p{L}_])#iu', '#^\*+#', '#\*+$#'), array('([\x20]*?|[\p{Nd}\p{L}_-]*?)', '[\p{Nd}\p{L}_-]*?', '[\p{Nd}\p{L}_-]*?'), $word);

...

// Replace the asterisk inside the pattern, at the start and at the end of it with regexes
$word = preg_replace(array('#(?<=\S)\*+(?=\S)#iu', '#^\*+#', '#\*+$#'), array('(\x20*?\S*?)', '\S*?', '\S*?'), $word);
обернул в скобки ( ) замены * чтобы попадали в $2 $3 и т.д.
Code: Select all
// Replace asterisk(s) inside the pattern, at the start and at the end of it with regexes
$word = preg_replace(array('#(?<=[\p{Nd}\p{L}_])\*+(?=[\p{Nd}\p{L}_])#iu', '#^\*+#', '#\*+$#'), array('([\x20]*?|[\p{Nd}\p{L}_-]*?)', '([\p{Nd}\p{L}_-]*?)', '([\p{Nd}\p{L}_-]*?)'), $word);

...

// Replace the asterisk inside the pattern, at the start and at the end of it with regexes
$word = preg_replace(array('#(?<=\S)\*+(?=\S)#iu', '#^\*+#', '#\*+$#'), array('(\x20*?\S*?)', '(\S*?)', '(\S*?)'), $word);
Сильно не проверял, на первый взгляд работает. Может стоит как то развить эту тему и включить в стандартный движок?

Added after 29 minutes 27 seconds:
Еще позаменял
Code: Select all
(' . $word . ')
на
Code: Select all
(?:' . $word . ')
Чтобы первая * соответствовала $1, а не $2
Code: Select all
бля* -> бл.$1
*пизд* -> $1п.зд$2
Last edited by Dr.Death on 09.10.2014, 11:45, edited 1 time in total.
Моды не пишу, программированию не обучаю. Ваше незнание и нежелание знать, ваши проблемы, а не повод меня оскорблять. Минусите на здоровье, вдруг поможет.
Dr.Death M
Topic author, Гуру
Avatar
Reputation: 69
With us: 2 yaers 7 months

Post #2by Dr.Death » 17.09.2014, 08:18

Похоже это только мне надо :smile:
Моды не пишу, программированию не обучаю. Ваше незнание и нежелание знать, ваши проблемы, а не повод меня оскорблять. Минусите на здоровье, вдруг поможет.
Dr.Death M
Topic author, Гуру
Avatar
Reputation: 69
With us: 2 yaers 7 months

Post #3by Никита Однороб » 17.09.2014, 15:39

Да не, фича полезная
Никита Однороб
Новичок
Reputation: 5
With us: 3 yaers 4 months

Post #4by Boloto » 09.10.2014, 10:41

Dr.Death, спасибо, сделаю у себя
Boloto
Новичок
Reputation: 0
With us: 3 yaers 5 months


Forum name: Предложения и пожелания
Description: В phpBBex 1.x чего-то не хватает? Напишите об этом здесь, и мы постараемся исправиться.
Forum rules: Одна тема — один запрос новой возможности. Обязательно формируйте внятный заголовок, максимально отражающий суть вашей идеи. Также приведите примеры, где предлагаемая вами возможность будет актуальна.

Quick reply


Enter the code exactly as it appears. All letters are case insensitive.
Confirmation code
:hi: :smile: :wink: :twisted: :sad: :evil: :smoke: :eh: :eek: :fie: :silenced: :razz: :oops: :help: :spy: :insane: :biggrin: :toothless: :ill: :nervious: :weirdface: :pray: :clap: :think: :boxing: :cyclop: :rambo: :zombie: :cry: View more smilies

   

Return to Предложения и пожелания