<?php

error_reporting(-1);

function replaceWord($word, $replacement, $text) {

	$chars = preg_split('//u', $word, -1, PREG_SPLIT_NO_EMPTY);
	$pattern = "";
	$rusChars = ['е','у','о','р','х','а','с'];
	$rusEngChars = ['(е|e)', '(у|y)', '(о|o)','(р|p)','(х|x)','(а|a)','(с|c)'];

	foreach ($chars as $char) {
		$pattern .= "{$char}\\s?";
	}

	$pattern = str_replace($rusChars, $rusEngChars, $pattern);

	$result =  preg_replace("/{$pattern}/ui", $replacement, $text);
	echo $result . "\n";
}

replaceWord("дурак", "Хороший человек", "Ты дурaк"); // английская 'a'
replaceWord("дурак", "Хороший человек", "Ты дУрак"); // регистр
replaceWord("дурак", "Хороший человек", "Ты д у р а к"); // с пробелами
replaceWord("дурак", "Хороший человек", "Ты Д у Р а к"); // с пробелами и регистром