Скажи, что у меня есть строка, которая выглядит так:
Дайте мне свой xw al l et et сейчас!
И список запрещенных слов:
кошелек, банан, картошка
Как бы я написал регулярное выражение, чтобы поймать любое из этих слов? Даже с пробелами между персонажами.
Приветствия.
Этот код сделает работу:
foreach($banned as $word) {
$chars = str_split($word);
$pattern = implode(' ?', $chars);
$check = preg_match('/'.$pattern.'/i', $text);
}
$ banned — массив запрещенных слов
$ text — это текст, который вы проверяете на наличие запрещенных слов
И $ галочки, если данное запрещенное слово найдено, и, в зависимости от вашей логики, которую вы хотите достичь, используйте эту переменную подходящим для вас способом.
Простой способ поймать любое слово (без пробела):
function censorship($bannedwords, $sentence) {
foreach($bannedwords as $word) $sentence = str_replace($word, '****', $sentence);
return $sentence;
}
$bannedwords = ['banana', 'potato'];
echo censorship($bannedwords, 'Every banana is a potato');
// Output : Every **** is a ****