PHP:将一个字段分成两个

时间:2010-09-14 11:42:37

标签: php string split explode

许多人建议我将名字和姓氏分开,而不是将“full_name”与所有内容分开,如何将它们分隔到每个变量中,所以如果为你的例子输入字段:“Dude Jackson”然后“Dude”进入$姓和杰克逊在$姓。

7 个答案:

答案 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)

您需要使用空格作为分隔符将值分解为其部分

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

答案 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  = " ";
    }