Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Требуется составить функцию, которыя бы в передаваемом ей тексте по регулярному выражению заменяла все вхождения подстроки на заданную последовательность символов *

Подстрока состоит только из букв или цифр, но хитрость в том, что если между этими буквами и цифрами присутвуют не буквы и не цифры, то условие совпадения считается выполненным. Нечувствительно к регистру.

Т.е., например, подстрока:

топ

Строка для обработки:

Этот. Оппонент. Выведен в т %о%%№ п и выше топа

После обработки функцией должно получиться:

Это*****понент. Выведен в ********* и выше ***а

Я пробовал так:

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);

?>

Но что-то не работает.

14 лет назад
tri777ki
Игорь 
46 летРоссия
17 лет в сервисе
Был
11 лет назад
Выбранный исполнитель
dmitron74
Дмитрий 
49 летУкраина
15 лет в сервисе
Был
4 года назад
14 лет назад
$1
1 день