Laravel 5.2 Split String名字姓氏

时间:2016-07-08 13:39:28

标签: php arrays laravel laravel-5

我有一个从全名表单传递的字符串。

在我的数据库中我存储了名字和姓氏..我使用以下内容分割字符串:

$name = explode(" ", $request->name);
$lastname = array_pop($name);
$firstname = implode(" ", $name);

这很有用,但是,如果用户没有在字段中输入姓氏,那么上面的内容就不起作用,因为姓氏成为第一个。

我错过了什么吗?

5 个答案:

答案 0 :(得分:12)

这就是我用来分割名字的原因:

$splitName = explode(' ', $name, 2); // Restricts it to only 2 values, for names like Billy Bob Jones

$first_name = $splitName[0];
$last_name = !empty($splitName[1]) ? $splitName[1] : ''; // If last name doesn't exist, make it empty

答案 1 :(得分:2)

这就是我喜欢做的事情:

$firstname = explode(' ', trim($fullname))[0];

或使用laravel helper head

$firstname = head(explode(' ', trim($fullname)));

或者如果你肯定全名不是空的:

$firstname = strtok(trim($fullname),  ' ');

答案 2 :(得分:0)

我通常会执行此操作,这与您的操作非常相似(使用array_shift代替array_pop):

$split = explode(" ", $request->name);

$firstname = array_shift($split);
$lastname  = implode(" ", $split);

使用单个名称,多个名称和空字符串。没有条件。

答案 3 :(得分:0)

我认为它看起来还不错:)

list($firstName, $lastName) = array_pad(explode(' ', trim($fullName)), 2, null);

答案 4 :(得分:-1)

请尝试以下操作。

$list = list($firstName, $lastName) = array_pad(explode(' ', 
    trim($name)), 2, null);

print_r([
    'firstname' => trim(str_replace($list[(count($list)-1)],"",$name)),
    'lastname' => $list[(count($list)-1)]
]);