PHP: разделить одно поле на два - PullRequest
2 голосов
/ 14 сентября 2010

Так как многие рекомендуют мне разделять имя и фамилию вместо «полное_имя» со всем, как я могу разделить их для каждой переменной, так что если для вас пример напишите в поле: «Чувак Джексон», то «Чувак» получает в $ имя и Джексон в $ фамилия.

Ответы [ 7 ]

5 голосов
/ 14 сентября 2010

Невозможно сделать со 100% точностью, так как имя / фамилия содержит больше информации, чем одно «полное имя». (Полное имя может включать отчества, инициалы, названия и т. Д. Во многих разных порядках.)

Если вам просто нужно быстрое исправление для устаревшей базы данных, возможно, будет удобно разделить на первый пробел.

2 голосов
/ 14 сентября 2010

Предполагая, что имя всегда стоит первым, а отчества нет:

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

Это просто взрывает $full_name в массив, содержащий две строки, если они разделены только одним пробелом, и отображает их в переменные имени и фамилии соответственно.

1 голос
/ 14 сентября 2010

Вы можете сделать:

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

Это предполагает, что ваше полное имя содержит имя и фамилию, разделенные одним пробелом.

РЕДАКТИРОВАТЬ:

В случае, если фамилия отсутствует, вышеуказанный метод выдает предупреждение undefined offset.Чтобы преодолеть это, вы можете использовать альтернативный метод:

if(preg_match('/^(\S*)\s*(\S*)$/',$full_name,$m)) {
        $first_name = $m[1];
        $last_name = $m[2];
}
0 голосов
/ 14 сентября 2010

Это код / ​​решение

    $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  = " ";
    }
0 голосов
/ 14 сентября 2010

Я не программист PHP, но для быстрого исправления, без потери данных,

$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);

Это должно сохранить всю оставшуюся часть имени в $ lastname, полезно для таких имен, как «Roelof van der Merwe». Также вы можете добавить чеки на $ full_name только в качестве имени, без фамилии.

0 голосов
/ 14 сентября 2010

вам нужно будет разбить значение на части, используя пробел в качестве разделителя

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

0 голосов
/ 14 сентября 2010
$full_name = "Dude Jackson";
$a = explode($full_name, " ");
$firstname = $a[0];
$lastname = $a[1];
...