php代码来提取名字和姓氏从全名

bvpmtnay  于 2022-10-30  发布在  PHP
关注(0)|答案(5)|浏览(313)

我是一个非常初学php的人。我想从全名中提取名字和姓氏。下面是我的代码:

<?php
$str= "fname lname";
$len=strlen($str);
$s="";
for($i=0;i<=$len;$i++)
{
$sub=substr($str,$i,($i+1));
if($sub!=" ")
{
$s=s+$sub;
}
else {break;}
}
echo $s;
?>

这段代码的问题是循环无限运行,并导致致命错误。任何帮助都将不胜感激。

8yoxcaq7

8yoxcaq71#

这是一种快速简便的方法。

$name = 'John Smith';

list($firstName, $lastName) = explode(' ', $name);

echo $firstName;
echo $lastName;

但如果你想考虑中间名等,

$name = 'John Mark Smith';
$name = explode(' ', $name);

$firstName = $name[0];
$lastName = (isset($name[count($name)-1])) ? $name[count($name)-1] : '';

第二种方法会更好,因为它也适用于1个名称。

hc2pp10m

hc2pp10m2#

示例:

<?php
    $fullname = 'Carlos Fernandes Paddington da Costa Silva';
    $fullname = trim($fullname); // remove double space
    $firstname = substr($fullname, 0, strpos($fullname, ' '));
    $lastname = substr($fullname, strpos($fullname, ' '), strlen($fullname));
?>
mmvthczy

mmvthczy3#

其他解决方案不考虑姓名是否包含两个以上的单词。这将把第一个单词保存为名字,其余单词保存为姓氏:

$inputName = "fname lname";
$nameArr   = explode(' ', trim($inputName));
$firstName = $nameArr[0] ?? null;
$lastName  = ($nameArr[1] ?? null) ? implode(' ', array_slice($nameArr, 1)) : null;
cunj1qz1

cunj1qz14#

在某些情况下,这里的一些其他答案会导致未定义的错误。我会:

$names = explode(' ', $fullname, 2 );
$fname = array_shift( $names );
$lname = array_shift( $names ) or $lname = '';
x6492ojm

x6492ojm5#

function Split_Name($name) {
//Pass the Full Name to the function

//Trim the Full Name for any paddings
$name = trim($name);

//Split the Full Name by Spaces
$split_name = explode(' ',$name);

//Then iterate through each Name to get the length  
foreach($split_name as $v) {
   $string []= strlen($v);
}

//Get First Name
$first_name = $split_name[0];
//Get Last Name
$last_name = $split_name[count($string)-1];

//Return the Array of Name Example (1)
//return print_r(array($first_name, $last_name));

//Return As Associative Array Example (2)
return print_r(array('FirstName' => $first_name, 'LastName' => $last_name));}

拆分_名称(“约翰·亚当·麦克马斯特”);//示例(1)输出数组([0] =〉John [1] =〉McMaster)
拆分_名称(“约翰·亚当·麦克马斯特”);//示例(2)输出数组([名字] =〉John [姓氏] =〉McMaster)

相关问题