views:

71

answers:

7

As many recommend me to seperate firstname and lastname instead of "full_name" with everything in, how can i seperate them to each variables, so if you example type in the field: "Dude Jackson" then "dude" gets in $firstname and Jackson in the $lastname.

+2  A: 

Assuming first name always comes first and there's no middle name:

list($firstname, $lastname) = explode(' ', $full_name);

This simply explodes $full_name into an array containing two strings if they're separated by only one space, and maps them to the first and last name variables respectively.

BoltClock
+1  A: 

You can do:

list($first_name,$last_name) = explode(' ',$full_name);

This assumes that you full name contains first name and last name separated by single space.

EDIT:

In case the lastname is not present, the above method give a warning of undefined offset. To overcome this you can use the alternative method of:

if(preg_match('/^(\S*)\s*(\S*)$/',$full_name,$m)) {
        $first_name = $m[1];
        $last_name = $m[2];
}
codaddict
If last name isn't present, you can still do list($first_name,$last_name) = explode(' ',$full_name.' ');
Mark Baker
A: 
$full_name = "Dude Jackson";
$a = explode($full_name, " ");
$firstname = $a[0];
$lastname = $a[1];
Martin
A: 

you would need to explode the value into its parts using a space as the separator

http://php.net/manual/en/function.explode.php

Drewdin
+5  A: 

It's impossible to do with 100% accuracy, since the first/last name contains more information than a single "full name". (A full name can include middle names, initials, titles and more, in many different orders.)

If you just need a quick fix for a legacy database, it might be OK to split by the first space.

geon
A: 

I am no PHP programmer, but for a quick fix, without data loss,

$full_name = "Dude Jackson";
$a = explode($full_name, " ");
$firstname = $a[0];
$count = 1;
$lastname = "";
do {
    $lastname .= $a[$count]." ";
    $count++;
} while($count<count($a));
$lastname = trim($lastname);

This should save all remaining part of name in $lastname, should be helpful for names like "Roelof van der Merwe". Also you can throw in checks for $full_name as first name only, without last name.

Ashish Patil
explode($full_name, " ",2) ;-)
Col. Shrapnel
you just hit the nail on the head :)
Ashish Patil
A: 

This is the code/solution

    $full_name = "Dude Jackson";
    $a = explode($full_name, " ",1);
    if(count($a) == 2)
    {
       $firstname = $a[0];
       $lastname = $a[1];
    }
    if(count($a) < 2)
    {
       $firstname =  $full_name;
       $lastname  = " ";
    }
Web Developer