我正在寻找最可靠的方法来返回给出全名的人的名字和姓氏,到目前为止,我能想到的最好的是以下正则表达式:
$name = preg_replace('~\b(\p{L}+)\b.+\b(\p{L}+)\b~i', '$1 $2', $name);
Run Code Online (Sandbox Code Playgroud)
预期的输出应该是这样的:
William -> William // Regex Fails
William Henry -> William Henry
William Henry Gates -> William Gates
Run Code Online (Sandbox Code Playgroud)
我也希望它支持口音,例如"João".
编辑:我理解一些名称将无法正确识别,但这对我来说不是问题,因为这将用于本地站点,其中最后一个字是姓氏(虽然可能不是整个姓氏) )但这不是一个问题,因为我想要的只是一个快速的方式来说"亲爱的FIRST_NAME LAST_NAME"......所以所有这些讨论虽然完全有效,但对我来说毫无用处.
有人可以帮我弄这个吗?