缩短全名,因此姓氏只是第一个字母

时间:2012-07-13 02:40:51

标签: php string trim

在阅读了几个已经问过的问题并查看了其他一些网站之后,我仍然没有进一步找到一个简单的方法来取一个全名,比如说“Jake Whiteman”并将其修剪下来以便显示出来在网页上作为“杰克W.”显然没有语音标记,所以那里没有任何混淆。

任何人都知道该怎么做?我肯定这可能只是找到空白区域然后修剪姓氏,我似乎无法找到办法。

提前致谢!

5 个答案:

答案 0 :(得分:7)

$names = explode( " ", $name );
echo $names[0]." ".$names[1][0];

答案 1 :(得分:5)

您可以使用此代码。这适用于3个措辞名称,假设第二个单词是中间名,只会截断姓氏。

<?php

$name = "Jake Awesome Whiteman";
$separate = explode(" ", $name);
$last = array_pop($separate);

echo implode(' ', $separate)." ".$last[0].".";

?>

答案 2 :(得分:2)

假设它们总是格式为“[Other Names] LastName”,这样最后一个字总是姓,你可以通过php函数explode()通过分隔符[space]将它分成标记() http://php.net/manual/en/function.explode.php)

// Given
$name = "Jake Whiteman";

// Process
// Tokenize, getting separate names
$names = explode(' ', $name);
// Pop last name into variable $last_name, keep remaining names in $names
$last_name = array_pop($names);
// Get last initial
$last_initial = $last_name[0];

// Put first names back together
$beginning = implode(' ', $names);
$full_name = $beginning.' '.$last_initial.'.';

你可以把它们放在一个函数中:

function nameWithLastInitial($name) {
    $names = explode(' ', $name);
    $last_name = array_pop($names);
    $last_initial = $last_name[0];
    return implode(' ', $names).' '.$last_initial.'.';
}
$name = "Jake Whiteman";
echo nameWithLastInitial($name); // Should print 'Jake W.'

答案 3 :(得分:1)

$name = "Jake Whiteman";
$names = explode(' ', $name); //$names[0] = "Jake", $names[1] = "Whiteman"
echo $names[0]." ".substr($names[1], 0,1).".";

答案 4 :(得分:1)

当只有名字和用户输入多个名字

时,这会很有用
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<?php

$userName = "Jakeds hfg gsd";
if(preg_match('/\s/',$userName)) {
$separate = explode(" ", $userName);
$last = array_pop($separate);
$first = mb_strimwidth($separate[0], 0 , 15);
echo $first." ".$last[0].".";
} else {
$first = mb_strimwidth($userName, 0 , 15);
echo $first;
}

//echo $first." ".$last[0].".";

?>
</body>
</html>