Данная конструкция заменяет лишь одно слово из фразы:
$istok = "шерсть яка";
$vivod = preg_replace('/\bяк(а)\b/iu', 'як', $istok);
echo $vivod;
(здесь результат будет: "шерсть як")
пример: http://sandbox.onlinephpfunctions.com/code/fbf737865909307ff082811655e90e72cc2e4035
Задача: заменить фразу целиком на нужное слово, т.е. на выходе, вместо фразы "шерсть яка" получить "як".
Как этого добиться?
Набросал пример на коленке
$istok = "шерсть яка";
$vivod = preg_replace('/.*\b(як)\b.*/iu', '$1', $istok);
echo $vivod;
Работает только с указанными словами. В противном случае возвращает фразу без изменений.
$array = [
"яка" => "як",
"альпаки" => "альпака",
];
$istok = "шерсть альпаки";
$vivod = preg_replace('/.* ([^ ]*)/iu', '$1', $istok);
if (isset($array[$vivod])) {
$vivod = $array[$vivod];
} else {
$vivod=$istok;
}
echo $vivod;
Сборка персонального компьютера от Artline: умный выбор для современных пользователей