Просмотр поста

.
Rakovskiy
The Fast, Secure and Professional - Yii2

И так, представляю маленький класс который представляет из себя черный список сайтов. Его свойство - замена или поиск запрещенных сайтов в тексте по маске.
Почти каждый владелец сайта на котором присутствуем возможность комментирования чего либо встречался с проблемой спама на его сайте. В некоторых движках организована сырая замена определенных сайтов на какой-то текст. Мой класс представляет почти тоже самое только с возможностью замены/поиска по маске. Что это значит?

Ну к примеру есть у нас на сайте который не доброжелатель который спамит свой сайт, для примера - sait.ru Подключив мой класс он не сможет использовать не один из перечисленных вариантов написания своего сайта в тексте.


http://sait.ru
https://sait.ru
sait.ru
sait,ru
sait_ru
sait .ru
sait. ru
sait-ru


И т.д. Маску вы сможете добавить сами.

Теперь перейдем к самому коду.

Представим, что переменная $text содержит текст введенный пользователем, который нам нужно очистить от запрещенных ссылок:

$text = 'Привет, заходи на мой сайт sait.ru';

$obj = new RBlackListSites();
$obj->sites = [
    [
        'host' => 'sait',
        'domain' => 'ru',
    ],
    [
        'host' => 'example',
        'domain' => 'com',
    ],
];
$obj->mask = [
    'http://{host}.{domain}',
    'https://{host}.{domain}',

    '{host}.{domain}',
    '{host},{domain}',
    '{host}_{domain}',
    '{host}-{domain}',

    '{host} .{domain}',
    '{host} ,{domain}',
    '{host} _{domain}',
    '{host} -{domain}',

    '{host} . {domain}',
    '{host} , {domain}',
    '{host} _ {domain}',
    '{host} - {domain}',

    '{host}. {domain}',
    '{host}, {domain}',
    '{host}_ {domain}',
    '{host}- {domain}',
];
$obj->replace = '***SPAM***';
$obj->setText($text);

echo $obj->getText();


Внимание!
$obj->setText($text) должен быть объявлен после указания $obj->sites и $obj->mask
Прикрепленные файлы: