Помогите, плиз, с preg_replace

Eugeniy

Новичок
Помогите, плиз, с preg_replace

Есть скрипт:

PHP:
$bad_words = array( 
            "'[хХxXHh]{1,5}[^0-9A-Za-zа-яА-Я]*[уУyYuU]{1,5}[^0-9A-Za-zа-яА-Я]*[uUйЙиИяЯijIJeEеЕёЁ]{1,5}'", 
            "'\)\([^0-9A-Za-zа-яА-Я]*[уУyYuU]{1,5}[^0-9A-Za-zа-яА-Я]*[uUйЙиИяЯijIJeEеЕёЁ]{1,5}'", 
            "'[пПpPn]{1,5}[^0-9A-Za-zа-яА-Я]*[иИiI]{1,5}[^0-9A-Za-zа-яА-Я]*[зЗ3zZsS]{1,5}[^0-9A-Za-zа-яА-Я]*[дДdD]{1,5}'", 
            "'[ уУuUьЬъЪjJыЫyYаАaA]{1,5}[^0-9A-Za-zа-яА-Я]*[еЕeE]{1,5}[^0-9A-Za-zа-яА-Я]*[бБbB6]{1,5}[^0-9A-Za-zа-яА-Я]*[аАиИуУaAiIuU]{1,5}'", 
            "'[сСcCsS(]{1,5}[^0-9A-Za-zа-яА-Я]*[уУuUyY]{1,5}[^0-9A-Za-zа-яА-Я]*[4чЧ]?[^0-9A-Za-zа-яА-Я]*[кКkK]{1,5}[^0-9A-Za-zа-яА-Я]*[аАуУеЕиИaAuUyYeEiI]{1,5}'", 
            "'[fF]{1,5}[^0-9A-Za-zа-яА-Я]*[uUaA]{1,5}[^0-9A-Za-zа-яА-Я]*[cC]{1,5}[^0-9A-Za-zа-яА-Я]*[kK]{1,5}'", 
            "'[жЖzZ]{1,5}[^0-9A-Za-zа-яА-Я]*[hH]?[^0-9A-Za-zа-яА-Я]*[оОoO]{1,5}[^0-9A-Za-zа-яА-Я]*[пПpPp]{1,5}'", 
            "'[ ,?!\.][бБbB6]{1,5}[^0-9A-Za-zа-яА-Я]*[лЛlL]{1,5}[^0-9A-Za-zа-яА-Я]*[яЯjJyY]{1,5}'", 
            "'\s[пПpP]{1,5}[^0-9A-Za-zа-яА-Я]*[иИiI]{1,5}[^0-9A-Za-zа-яА-Я]*[дДdD]{1,5}[^0-9A-Za-zа-яА-Я]*[оОаАеЕoOaAeE]{1,5}'" 
            );

$good_word = "[пиии...]";

$mesg = preg_replace($bad_words, "<b><span class=bad_word>.$good_word.</span></b>", $mesg);
Как бы вместо $good_word поставить то само слово которое заменяется на $good_word ?
 

IntenT

SkyDiver
попробуй
"<b><span class=bad_word>\\1</span></b>"
Если не получится с \\1 попробуй ставить \\2 и тд
 

Eugeniy

Новичок
ответ:
PHP:
$mesg = preg_replace($bad_words, "<b><span class=bad_word>\\0</span></b>", $mesg);
 

Demiurg

Guest
Eugeniy, ты думаешь это хорошая защита от мата ?
 

Eugeniy

Новичок
Demiurg, это не защита от мата. Лучшей защиты от мата чем модераторы я еще не видел. А это подсветка матов для модераторов.

в стили пишем:
PHP:
<head>
<stile>
.bad_word
{
	background-color: #D1BCFD;
}
</style>
</head>
а подсвечиваем так:
PHP:
$bad_words = array( 
            "'[хХxXHh]{1,5}[^0-9A-Za-zа-яА-Я]*[уУyYuU]{1,5}[^0-9A-Za-zа-яА-Я]*[uUйЙиИяЯijIJeEеЕёЁ]{1,5}'", 
            //  .......................................... // еще слова
           "'\s[пПpP]{1,5}[^0-9A-Za-zа-яА-Я]*[иИiI]{1,5}[^0-9A-Za-zа-яА-Я]*[дДdD]{1,5}[^0-9A-Za-zа-яА-Я]*[оОаАеЕoOaAeE]{1,5}'" 
            ); 
$mesg = preg_replace($bad_words, "<b><span class=bad_word>\\0</span></b>", $mesg);
Знаете что-то лучше? Подскажите, посоветуйте.
 

Linker

Guest
Eugeniy

Дело в том, что всё это "мартышкин труд" как в басне :)
Если есть модерация, зачем подсвечивать? Не подсвеченное можно пропустить, для модераторов это будет скорее помеха чем помощь.
Данный код будет скорее всего самый ресурсоёмкий во всём скрипте, а пользы от него будет меньше всего.
 

Eugeniy

Новичок
модеры сами попросили
пропуск неподсевеченых обсуждался... ну пока смотрим....

сейчас больше нормальные слова подсвечиваются :)

"в лесу родилась елочка"
 
Сверху