PHP: Разделите одно поле на два
Поскольку многие рекомендуют мне разделять имя и фамилию вместо "полное имя" со всем, как я могу разделить их для каждой переменной, поэтому, если для вас, например, введите в поле: "Чувак Джексон", то "Чувак" получает $имя и Джексон в $фамилия.
7 answers
Предполагая, что имя всегда стоит на первом месте и нет второго имени:
list($firstname, $lastname) = explode(' ', $full_name);
Это просто взрывает $full_name
в массив, содержащий две строки, если они разделены только одним пробелом, и сопоставляет их переменным имени и фамилии соответственно.
Это невозможно сделать со 100% точностью, так как имя/фамилия содержит больше информации, чем одно "полное имя". (Полное имя может включать в себя отчество, инициалы, титулы и многое другое в разных порядках.)
Если вам просто нужно быстро исправить устаревшую базу данных, возможно, будет нормально разделить ее на первый пробел.
Вы можете сделать:
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];
}
$full_name = "Dude Jackson";
$a = explode($full_name, " ");
$firstname = $a[0];
$lastname = $a[1];
Вам нужно будет разделить значение на части, используя пробел в качестве разделителя
Я не программист 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);
Это должно сохранить всю оставшуюся часть имени в $фамилия, должно быть полезно для таких имен, как "Рулоф ван дер Мерве". Также вы можете вводить чеки на $full_name только в качестве имени, без фамилии.
Это код/решение
$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 = " ";
}