我有一个从全名表单传递的字符串。
在我的数据库中我存储了名字和姓氏..我使用以下内容分割字符串:
$name = explode(" ", $request->name);
$lastname = array_pop($name);
$firstname = implode(" ", $name);
这很有用,但是,如果用户没有在字段中输入姓氏,那么上面的内容就不起作用,因为姓氏成为第一个。
我错过了什么吗?
答案 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)]
]);