我有一个数组,其中包含全名。我知道如何显示基本上位于第一个索引中的姓氏。如何在姓氏后显示其余值?
$fullname = array('fullname' => 'POTTER Harry James');
$res = implode("", $fullname);
$name = preg_split("/[\s,]+/", $res);
$lname = $name[0];
我在名字中做了什么:
$fname = $name[1]. " ".$name[2];
它工作正常,但有更清洁的方法吗?我的意思是,如果用户有超过2个名字怎么办?
感谢。
答案 0 :(得分:3)
我建议使用explode()
功能:
<?php
$fullname = array('fullname' => 'POTTER Harry James');
$parts = explode(' ', $fullname['fullname']);
var_dump($parts);
?>
节目:
array(3) {
[0]=>
string(6) "POTTER"
[1]=>
string(5) "Harry"
[2]=>
string(5) "James"
}
您可以以某种方式使用$parts
的任何部分。
<?php
$a = array_shift($parts);
$b = implode(' ', $parts);
echo "{$b} ({$a})"; // Harry James (POTTER)
?>
的 UPDv1:强> 的
在您当前的代码中,您可能会做同样的事情:
<?php
$lname = array_shift($name);
$fname = implode(' ', $name);
?>
答案 1 :(得分:2)
我认为你应该首先从数组中取出姓氏,然后使用循环将剩余的名称连接为第一名。
$fullname = array('fullname' => 'POTTER Harry James');
$res = implode("", $fullname);
$name = preg_split("/[\s,]+/", $res);
$lname = array_shift($name);
$fname = "";
foreach($name as $fnames)
$fname.= " ".$fnames;
答案 2 :(得分:1)
$fullname = array('fullname' => 'POTTER Harry James');
$firstNames = strstr($fullname['fullname'], ' '); // $firstNames='Harry James'
这会在第一个空格字符之后获得字符串。
答案 3 :(得分:0)
你可以做到
<?php
$fullname = array('fullname' => 'POTTER Harry James');
list($lname,$fname) = explode(" ", $fullname["fullname"],2);
echo $fname."<br>".$lname;
?>
如果名称包含2个或更多单词,则此功能将起作用。如果有超过2个单词,那么除了第一个单词之外的任何内容都将被视为名字,第一个单词将被视为姓氏。
答案 4 :(得分:0)
这是一项不可能完成的任务。如果留给他们自己的设备,用户将把各种各样的东西放在一个字段中。
如果你关心分离用户的名字和姓氏,你应该单独询问它们,因为没有正则表达式可能决定分解他们名字的正确方法。