许多人建议我将名字和姓氏分开,而不是将“full_name”与所有内容分开,如何将它们分隔到每个变量中,所以如果为你的例子输入字段:“Dude Jackson”然后“Dude”进入$姓和杰克逊在$姓。
答案 0 :(得分:5)
不可能100%准确,因为名/姓包含的信息多于单个“全名”。 (全名可以包括许多不同顺序的中间名,缩写,标题等。)
如果您只需要对旧数据库进行快速修复,则可以按第一个空格进行拆分。
答案 1 :(得分:2)
假设名字始终排在第一位且没有中间名:
list($firstname, $lastname) = explode(' ', $full_name);
如果它们仅由一个空格分隔,则只会将$full_name
分解为包含两个字符串的数组,并将它们分别映射到名字和姓氏变量。
答案 2 :(得分:1)
你可以这样做:
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];
}
答案 3 :(得分:0)
$full_name = "Dude Jackson";
$a = explode($full_name, " ");
$firstname = $a[0];
$lastname = $a[1];
答案 4 :(得分:0)
您需要使用空格作为分隔符将值分解为其部分
答案 5 :(得分:0)
我不是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的支票作为名字,而不是姓氏。
答案 6 :(得分:0)
这是代码/解决方案
$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 = " ";
}