在php中使用UTF-8 Chars拆分名字和姓氏

时间:2017-05-31 16:37:45

标签: php regex preg-replace

希望有人可以帮助提供一个简单的解决方案,当全名在字符上加上法语或其他重音时,拆分名字和姓氏。

当名称没有任何重音时,这似乎工作正常,但是当字符串中有重音时无法检测空格。

示例名称为“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 ) );

2 个答案:

答案 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],否则为其分配一个空字符串。