Я ищу лучший надежный способ вернуть имя и фамилию человека, которому дано полное имя , на данный момент лучшее, что я могу придумать, это следующее регулярное выражение:
$name = preg_replace('~\b(\p{L}+)\b.+\b(\p{L}+)\b~i', '$1 $2', $name);
Ожидаемый результат должен быть примерно таким:
William -> William // Regex Fails
William Henry -> William Henry
William Henry Gates -> William Gates
Я также хочу, чтобы поддерживал акценты , например "João".
РЕДАКТИРОВАТЬ: Я понимаю, что некоторые имена не будут идентифицированы должным образом, но это не проблема для меня, так как это будет использоваться на локальном сайте, где последнее слово это фамилия (хотя, возможно, и не вся фамилия), но это не проблема, поскольку все, что я хочу, - это быстрый способ сказать "Уважаемый FIRST_NAME LAST_NAME" ... Так что все эти обсуждения, хотя и полностью действительны для меня бесполезно.
Может кто-нибудь помочь мне с этим?