【问题标题】:PHP: Separate one field in twoPHP:将一个字段分成两个
【发布时间】:2010-09-14 11:42:37
【问题描述】:

正如许多人建议我将名字和姓氏分开而不是“全名”与所有内容一样,我如何将它们分开到每个变量中,所以如果您在字段中输入示例:“Dude Jackson”然后“Dude”进入$firstname 和 Jackson 在 $lastname 中。

【问题讨论】:

    标签: php string split explode


    【解决方案1】:

    不可能做到 100% 准确,因为名字/姓氏比单个“全名”包含更多信息。 (全名可以包括中间名、首字母、头衔等,以许多不同的顺序排列。)

    如果您只需要对旧数据库进行快速修复,则可以按第一个空格进行拆分。

    【讨论】:

      【解决方案2】:

      假设名字总是在前并且没有中间名:

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

      这只是将$full_name 分解为一个包含两个字符串(如果它们仅由一个空格分隔)的数组,并将它们分别映射到名字和姓氏变量。

      【讨论】:

        【解决方案3】:

        你可以这样做:

        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];
        }
        

        【讨论】:

        • 如果姓氏不存在,您仍然可以执行 list($first_name,$last_name) = explode(' ',$full_name.' ');
        【解决方案4】:
        $full_name = "Dude Jackson";
        $a = explode($full_name, " ");
        $firstname = $a[0];
        $lastname = $a[1];
        

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

            我不是 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);
            

            这应该将 name 的所有剩余部分保存在 $lastname 中,应该对“Roelof van der Merwe”之类的名称有所帮助。您也可以检查 $full_name 仅作为名字,没有姓氏。

            【讨论】:

            • explode($full_name, " ",2) ;-)
            • 你只是一针见血 :)
            【解决方案7】:

            这是代码/解决方案

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-03-28
              • 1970-01-01
              • 2021-07-06
              • 2019-11-07
              • 1970-01-01
              • 1970-01-01
              • 2011-07-29
              相关资源
              最近更新 更多