1 Способ (Посложнее, с циклом и плюшками):
$str = 'my name is boris';
$arr = explode(' ', $str); // Разбиваем строку по пробелам в массив
foreach($arr as &$item) {
$last = strtoupper(substr($item, -1)); // Вытаскиваем последний символ из слова и преобразуем его в верхний регистр. Если в строке есть кириллица,нужно использовать mb_strtoupper() (Далее, тоже, использовать аналоги функций из расширения mb).
$item[strlen($item) - 1] = $last; // Заменяем последний символ в строке, символом в верхнем регистре.
}
unset($item);
$result = implode(' ', $arr);
2 Способ (Попроще):
$str = 'my name is boris';
$reversed = strrev($str); // Переворачиваем строку задом наперед
$result = strrev(ucwords($reversed)); // Меняем первый символ в перевернутой строке символом в верхнем регистре, переворачиваем строку.