フルネームのフォームから渡された文字列があります。
データベースに姓と名を保存します。次のようにして文字列を分割しました。
$name = explode(" ", $request->name);
$lastname = array_pop($name);
$firstname = implode(" ", $name);
これはうまく機能しますが、ユーザーがフィールドに姓を入力しない場合、姓が最初になるため、上記は機能しません。
何か不足していますか?
これは、名前の分割に使用したものです。
$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
これが私がしたいことです:
$firstname = explode(' ', trim($fullname))[0];
またはlaravel helper head:
$firstname = head(explode(' ', trim($fullname)));
または、フルネームが空ではないと確信している場合:
$firstname = strtok(trim($fullname), ' ');
私は通常これを行いますが、これはあなたがすることと非常によく似ています(array_shift
の代わりにarray_pop
を使用)。
$split = explode(" ", $request->name);
$firstname = array_shift($split);
$lastname = implode(" ", $split);
単一の名前、複数の名前、空の文字列の両方で機能します。条件なし。
悪くないと思います:)
list($firstName, $lastName) = array_pad(explode(' ', trim($fullName)), 2, null);