Составить регулярное выражение
Требуется составить функцию, которыя бы в передаваемом ей тексте по регулярному выражению заменяла все вхождения подстроки на заданную последовательность символов *
Подстрока состоит только из букв или цифр, но хитрость в том, что если между этими буквами и цифрами присутвуют не буквы и не цифры, то условие совпадения считается выполненным. Нечувствительно к регистру.
Т.е., например, подстрока:
топ
Строка для обработки:
Этот. Оппонент. Выведен в т %о%%№ п и выше топа
После обработки функцией должно получиться:
Это*****понент. Выведен в ********* и выше ***а
Я пробовал так:
function replace($badword, $text) {
$U = $badword{0};
for($i = 1; $i
$U .= '\W*'.$badword{$i};
}
$U = '#'.$U.'#';
preg_match_all($U, $text, $matches, PREG_OFFSET_CAPTURE);
foreach($matches[0] as $i => $w) {
$text = substr_replace($text,str_repeat('*',strlen($w[0])), $w[1], strlen($w[0]));
}
echo $text;
}
$badword = "топ";
$text = "Этот. Оппонент. Выведен в т %о%%№ п и выше топа";
replace ($badword, $text);
?>
Но что-то не работает.