Помогите решить задачку. Не силен в регулярных выражениях. Имеется на входе - "Фамилия Имя Отчество" или "Фамилия Имя" могут быть оба варианта. На выходе нужно получить "Фамилия И.О." или "Фамилия И." соответственно
Если нужно именно регуляркой, то как-то так:
$str = 'Фамилия Имя Отчество';
echo preg_replace('~\h\K(\p{Lu})\p{Ll}+~u', '$1.', $str);
Можно на php
Пример:
$FIO = "Фамилия Имя Отчество";
$FIOarr = explode(' ', $FIO);
$count = count($FIOarr);
$Surname = $FIOarr[0];
$Name = iconv_substr($FIOarr[1], 0, 1) . ".";
if (array_key_exists(2, $FIOarr)){
$Patronymic = ' ' . iconv_substr($FIOarr[2], 0, 1) . ".";
} else {
$Patronymic = "";
}
$FIOnew = $Surname . ' ' . $Name . $Patronymic;
echo $FIOnew;
Сборка персонального компьютера от Artline: умный выбор для современных пользователей