PHP нецензурная лексика

Я работаю над плагином WordPress, который заменяет плохие слова из комментариев случайными новыми из списка.

Теперь у меня есть 2 массива: один содержит плохие слова, а другой содержит хорошие слова.

$bad = array("bad", "words", "here");
$good = array("good", "words", "here");

Так как я новичок, я застрял в какой-то момент.

Чтобы заменить плохие слова, я использовал$newstring = str_replace($bad, $good, $string);.

Моя первая проблема заключается в том, что я хочу отключить чувствительность к регистру, поэтому я не буду помещать такие слова"bad", "Bad", "BAD", "bAd", "BAd", etc но мне нужно новое слово, чтобы сохранить формат исходного слова, например, если я напишу «Плохо», оно будет заменено «Слова», но если я наберу «плохо», оно будет заменено «словами», и т.п.

Моей первой мыслью было использоватьstr_ireplace, но он забывает, было ли в оригинальном слове заглавная буква.

Вторая проблема заключается в том, что я не знаю, как поступить с такими пользователями, как «b a d», «w o r d s» и т. Д. Мне нужна идея.

Чтобы заставить его выбрать случайное слово, я думаю, что я могу использовать$new = $good[rand(0, count($good)-1)]; тогда$newstring = str_replace($bad, $new, $string);, Если у вас есть идея получше, я здесь, чтобы послушать.

Общий вид моего сценария:

function noswear($string)
{
    if ($string)
    {       
        $bad = array("bad", "words");
        $good = array("good", "words"); 
        $newstring = str_replace($bad, $good, $string);     
        return $newstring;
}

echo noswear("I see bad words coming!");

Заранее спасибо за вашу помощь!

Ответы на вопрос(2)

Ваш ответ на вопрос