希望有人可以帮助提供一个简单的解决方案,当全名在字符上加上法语或其他重音时,拆分名字和姓氏。
当名称没有任何重音时,这似乎工作正常,但是当字符串中有重音时无法检测空格。
示例名称为“Marc-AndréCôté”
$name = trim($FullNameInput);
$last_name = (strpos($name, ' ') === false) ? '' : preg_replace('#.*\s([\w-]*)$#', '$1', $name);
$first_name = trim( preg_replace('#'.$last_name.'#', '', $name ) );
答案 0 :(得分:0)
您可以使用爆炸功能。它与您的示例名称一起运行没有任何问题,并且比正则表达式解决方案更容易
$nameparts = explode(" ", $name);
echo $nameparts[0]; // First Name
echo $nameparts[1]; // Last Name
答案 1 :(得分:0)
在处理Unicode字符串时使用UNICODE修饰符并添加单引号,因为某些名称包含它:
preg_replace('#.*\s([\w\'-]*)$#u', '$1', $name)
UNICODE修饰符也将使\w
识别Unicode。 preg_match
解决方案会更清晰:
preg_match('/\s\K[\w\'-]+$/u', $name, $m)
您只需要检查是否匹配。如果匹配,请获取$m[0]
,否则为其分配一个空字符串。