Очень просто:
1. Обьявляешь набор гласных букв в массиве
2. Пробегаешься по массиву и смотришь есть ли гласная буква в искомом слове
3. Если есть - приписываешь ту букву, которую хочешь добавить
Как пример:
echo get_word('Хуй', 'Д'); // Дуй
echo get_word('Предложка', 'Д'); // Дедложка
echo get_word('Приветос', 'Д'); // Диветос
function get_word($word, $prepend){
$dictionary = ['а', 'о', 'э', 'и', 'у', 'ы', 'е', 'ё', 'ю', 'я'];
$sequences = [];
$charset = 'UTF-8';
foreach ($dictionary as $needle) {
$pos = mb_strpos($word, $needle, 0, $charset);
if ($pos !== false) {
$sequences[] = mb_substr($word, $pos, $charset);
}
}
return $prepend. array_reduce($sequences, function($a, $b) use ($charset){
return mb_strlen($a, $charset) > mb_strlen($b, $charset) ? $a : $b;
});
}
Если хочешь сделать для несколько слов, то тогда можно добавить отдельную функцию, которая будет основана на предыдущей. Вот так:
function get_many_words($sentence, $prepend){
$words = explode(',', $sentence);
$result = [];
foreach ($words as $word) {
$result[] = get_word($word, $prepend);
}
return implode(',', $result);
}
echo get_many_words('Привет, мир', 'Д'); // Дивет,Дир