2012-07-13 3 views
4

이미 몇 가지 질문을 읽고 몇 가지 다른 사이트를 확인한 후에도 "Jake Whiteman"과 같은 정식 이름을 사용하는 간단한 방법을 찾지 않습니다. 웹 페이지에 "Jake W"로 표시되도록 트리밍합니다. 분명히 거기에 어떤 혼란도 없다.전체 이름이 짧아 질 정도로 성씨가 첫 번째 글자 일뿐입니다

누구나 어떻게해야할까요? 공백을 알아 내고 그 성을 트리밍하는 것이 문제 일 것이라고 확신합니다. 단지 그것을 수행하는 방법을 찾지 못하는 것 같습니다.

미리 감사드립니다.

답변

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

멋지게 배열 구문을 –

+0

환호를 사용 완료! 기분 좋은! –

+0

아마도 Shamus O'Callaghan은 어떨까요? – Josh

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

그들이 형식의 항상있어 가정 "[다른 이름] 성", 마지막으로 할 말은 항상 그 마지막 이름, 당신은 분리 문자 [공간]에 의해에 의해 토큰으로 분할 할 수 있습니다 같은 당신은 함수에 모두 함께이를 넣을 수 있습니다

// 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.'.'; 

PHP 함수 (폭발) (http://php.net/manual/en/function.explode.php) :

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.' 
+0

이것은 내 버전보다 훨씬 강력합니다. – sean

+1

여전히 문자열 형식과 배열 길이에 대해 꽤 많은 가정을하고 있습니다. :). 튼튼함은 필요에 비례하여 유용합니다. 더 간단한 해결책을 추측 할 수 있다면, 일반적으로 더 나은 성능을 보입니다. – garromark

+0

그건 사실입니다. – sean

5

이 코드를 사용할 수 있습니다. 이것은 두 번째 단어가 중간 이름이라고 가정 할 때 3 개의 단어로 된 이름에 대해 작동하며 마지막 이름 만 잘립니다. 단지 이름 및 사용자가 여러 이름을 입력 할 때

<?php 

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

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

?> 
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>