web-dev-qa-db-ja.com

Laravel 5.2分割文字列の名姓

フルネームのフォームから渡された文字列があります。

データベースに姓と名を保存します。次のようにして文字列を分割しました。

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

これはうまく機能しますが、ユーザーがフィールドに姓を入力しない場合、姓が最初になるため、上記は機能しません。

何か不足していますか?

8
Dev.Wol

これは、名前の分割に使用したものです。

$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
17
aynber

これが私がしたいことです:

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

またはlaravel helper head

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

または、フルネームが空ではないと確信している場合:

$firstname = strtok(trim($fullname),  ' ');
3
Conrad Warhol

私は通常これを行いますが、これはあなたがすることと非常によく似ています(array_shiftの代わりにarray_popを使用)。

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

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

単一の名前、複数の名前、空の文字列の両方で機能します。条件なし。

1
rdiz

悪くないと思います:)

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