A little bit offtop.
Still, I do not agree with the answer @Naumov. I think it's better to use regular expressions to filter blacklists. Especially their (functions) execution in PHP 7 is greatly accelerated.
Here is a test example:
function r_no($text) { $text = strtolower($text); // Текст теряет свой изначальный вид!!! $array = array( 'blacksite', 'blacksite1' ); $text = str_replace($array, '****', $text); return $text; } function r_yes($text) { $array = array( '%blacksite%i', '%blacksite1%i' ); $text = preg_replace($array, '****', $text); return $text; } $text = 'Есть к примеру массив $array = array(\'blacksite.com\',...); в котором указаны запрещённые сайты, которые нужно фильтровать из текста, например заменять из на {Ссылка удалена} и можно проверять к примеру через regexp и после проходом in_array(), но зная что есть такая защита могут написать и Blacksite*com и blackSite com или с пробелом или * после любой буквы в слове blacksite, как правильнее и лучше\надёжнее фильтровать?'; $start = microtime(TRUE); for ($i = 0; $i < 100000; $i++) { $kk = r_no($text); } echo "<pre>\n"; echo "Время str_replace: ", microtime(TRUE) - $start, "\n"; echo "</pre>\n"; $start = microtime(TRUE); for ($i = 0; $i < 100000; $i++) { $kk = r_yes($text); } echo "<pre>\n"; echo "Время preg_replace: ", microtime(TRUE) - $start, "\n"; echo "</pre>\n";
Result of performance:
Время str_replace: 6.5153729915619 <-- ЖУТЬ О_о Время preg_replace: 0.18601012229919
If I comment out the line $text = strtolower($text); // Текст теряет свой изначальный вид!!!
$text = strtolower($text); // Текст теряет свой изначальный вид!!!
, then I get the following result:
Время str_replace: 0.16600894927979 Время preg_replace: 0.18501091003418
PS Feel free to use regular expressions for this task;)
spam
tag instead of a heap of tags with filters? - Visman