<?php
error_reporting(-1);

mb_internal_encoding('utf-8');

$lookalikes = [
'a' => 'а', 'b' => 'в', 'c' => 'с', 'e' => 'е', 'h' => 'н',
'k' => 'к', 'm' => 'м', 'o' => 'о', 'p' => 'р', 't' => 'т',
'x' => 'х', 'y' => 'у'
];

function isDurak($word) {
global $lookalikes;
$word = mb_strtolower(str_replace(' ', '', $word));
$word = strtr($word, $GLOBALS['lookalikes']);
return $word === 'дурак';
}

$text = 'Ты ДуРАк и вообще д у р а к, а еще ты durak!';
$words = preg_split('/(\s+)/u', $text, -1, PREG_SPLIT_NO_EMPTY);

$result = [];
foreach ($words as $word) {
$result[] = isDurak($word) ? 'хороший человек' : $word;
}

echo implode(' ', $result) . "\n";