Почти каждый владелец сайта на котором присутствуем возможность комментирования чего либо встречался с проблемой спама на его сайте. В некоторых движках организована сырая замена определенных сайтов на какой-то текст. Мой класс представляет почти тоже самое только с возможностью замены/поиска по маске. Что это значит?
Ну к примеру есть у нас на сайте который не доброжелатель который спамит свой сайт, для примера - 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