我在互联网上搜索但我找不到解决方案,我有一个字符串,其中包含工作人员的姓名(二,三,......)。
我想从这个字符串中提取first name, middle names and last name
示例字符串
$name = "Michael O. A. Ndanshau";
I am using explode function to get the names
$exp =explode(" ",$name);
print_r($exp);
array output
Array
(
[0] => Michael
[1] => O.
[2] => A.
[3] => Ndanshau
)
from above array i can get the first name and last name
$fname = $exp[0];
$lname = end($exp);
我不确定如何获得中间名,因为它可能是动态的。
我的目标是将第一个元素和最后一个元素之间的内容连接为中间名
if a have n elements in the array
$middename = $exp[1]+..$exp[n-1];
有什么帮助吗?
答案 0 :(得分:1)
也许是这样的。 array_shift
和array_pop
修改数组,所以剩下的就是中间名的元素:
$fname = array_shift($exp);
$lname = array_pop($exp);
middlename = implode(' ', $exp);
但您可能需要检查以确保预先存在超过2个元素,或至少剩余1个元素:
$fname = array_shift($exp);
$lname = array_pop($exp);
if(count($exp) >= 1) {
middlename = implode(' ', $exp);
}
或类似的东西。
答案 1 :(得分:1)
获取数组的第一个元素以获取名字和最后一个元素以获取姓氏。获取中间名之间的所有内容:
$firstname = $parts[0];
$middlename = implode(array_slice($parts, 1, -1));
$lastname = end($parts);
var_dump($firstname, $middlename, $lastname);
输出:
string(7) "Michael"
string(4) "O.A."
string(8) "Ndanshau"
答案 2 :(得分:1)
if(count($arr)>2) {
$middleName = implode(' ',array_slice($arr,1,count($arr)-2));
}
else {
$middleName = '';
}