0

私は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;
?>

このコードの問題は、ループが無限に実行され、致命的なエラーが発生することです。どんな助けでも大歓迎です。

4

4 に答える 4

6

これは迅速かつ簡単な方法です。

$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 つの名前でも機能するため、2 番目のアプローチの方が適しています。

于 2013-06-22T13:24:19.630 に答える
3

例:

<?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));
?>
于 2015-04-06T14:02:54.960 に答える
-1

ここでの他のいくつかの回答は、状況によっては未定義のエラーになります。私はするだろう:

$names = explode(' ', $fullname, 2 );
$fname = array_shift( $names );
$lname = array_shift( $names ) or $lname = '';
于 2013-06-22T13:28:29.923 に答える