Вы можете использовать для этого регулярное выражение или создать собственную функцию, которая шагает по строке по одной букве за раз. Вот решение для регулярных выражений:
preg_replace('/[aoieu]/', '[aoieu]?', $input);
Или ваша собственная функция (обратите внимание, что $search
может быть только одним символом или массивом символов, а не строками - вы можете использовать strpos
или аналогичный для создания функции, которая также обрабатывает более длинные строки):
function safe_replace($search, $replace, $subject) {
if(!is_array($search)) {
$search = array($search);
}
$result = '';
$len = strlen($subject);
for($i = 0; $i < $len; $i++) {
$c = $subject[$i];
if(in_array($c, $search)) {
$c = $replace;
}
$result .= $c;
}
return $result;
}
//Used like this:
safe_replace(array('a', 'o', 'i', 'e', 'u'), '[aoieu]?', 'black');