<?php
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("дурак", "Хороший человек", "Ты Д у Р а к"); // с пробелами и регистром
PD9waHAKCmVycm9yX3JlcG9ydGluZygtMSk7CgpmdW5jdGlvbiByZXBsYWNlV29yZCgkd29yZCwgJHJlcGxhY2VtZW50LCAkdGV4dCkgewoKCSRjaGFycyA9IHByZWdfc3BsaXQoJy8vdScsICR3b3JkLCAtMSwgUFJFR19TUExJVF9OT19FTVBUWSk7CgkkcGF0dGVybiA9ICIiOwoJJHJ1c0NoYXJzID0gWyfQtScsJ9GDJywn0L4nLCfRgCcsJ9GFJywn0LAnLCfRgSddOwoJJHJ1c0VuZ0NoYXJzID0gWyco0LV8ZSknLCAnKNGDfHkpJywgJyjQvnxvKScsJyjRgHxwKScsJyjRhXx4KScsJyjQsHxhKScsJyjRgXxjKSddOwoKCWZvcmVhY2ggKCRjaGFycyBhcyAkY2hhcikgewoJCSRwYXR0ZXJuIC49ICJ7JGNoYXJ9XFxzPyI7Cgl9CgoJJHBhdHRlcm4gPSBzdHJfcmVwbGFjZSgkcnVzQ2hhcnMsICRydXNFbmdDaGFycywgJHBhdHRlcm4pOwoKCSRyZXN1bHQgPSAgcHJlZ19yZXBsYWNlKCIveyRwYXR0ZXJufS91aSIsICRyZXBsYWNlbWVudCwgJHRleHQpOwoJZWNobyAkcmVzdWx0IC4gIlxuIjsKfQoKcmVwbGFjZVdvcmQoItC00YPRgNCw0LoiLCAi0KXQvtGA0L7RiNC40Lkg0YfQtdC70L7QstC10LoiLCAi0KLRiyDQtNGD0YBh0LoiKTsgLy8g0LDQvdCz0LvQuNC50YHQutCw0Y8gJ2EnCnJlcGxhY2VXb3JkKCLQtNGD0YDQsNC6IiwgItCl0L7RgNC+0YjQuNC5INGH0LXQu9C+0LLQtdC6IiwgItCi0Ysg0LTQo9GA0LDQuiIpOyAvLyDRgNC10LPQuNGB0YLRgApyZXBsYWNlV29yZCgi0LTRg9GA0LDQuiIsICLQpdC+0YDQvtGI0LjQuSDRh9C10LvQvtCy0LXQuiIsICLQotGLINC0INGDINGAINCwINC6Iik7IC8vINGBINC/0YDQvtCx0LXQu9Cw0LzQuApyZXBsYWNlV29yZCgi0LTRg9GA0LDQuiIsICLQpdC+0YDQvtGI0LjQuSDRh9C10LvQvtCy0LXQuiIsICLQotGLINCUINGDINCgINCwINC6Iik7IC8vINGBINC/0YDQvtCx0LXQu9Cw0LzQuCDQuCDRgNC10LPQuNGB0YLRgNC+0Lw=