2010-07-14 3 views
1

예 내 데이터베이스에 ucwords에 대문자 SMK SUNGAI PUNAI

$school = 'SMK SUNGAI PUNAI'; 
echo ucwords(strtolower($school)); 

OUPUT Smk Sungai Punai

질문 출력이 SMK Sungai Punai되는 SMK 계속 될 것입니다 만드는 방법

대문자.

업데이트.

문제 나는 학교 이름의 10K 목록이 있습니다. PDF에서 나는 mysql로 ​​변환했다. 저는 PDF에서 학교 이름을 정확히 복사했습니다. 모두 대문자입니다. 할 수 있다면 해결책이 필요합니다.

+1

당신은 단어에있는 모음에 따라이를 결정할 수 있을까요? 또한이 대문자 단어 목록을 갖고 있습니까? – Incognito

+0

작동하지 않는 해결책 대신 문제를 설명하십시오. 결과는 API의 예상 결과를 통해 유효합니다. 어떤 규칙에 따라 대문자로 시작하는 단어 대문자 또는 소문자를 사용 하시겠습니까? – stefanglase

답변

3

모든 단어의 첫 글자를 대문자로하여 모든 학교 이름을 지정하고이 특수 문자에서 몇 가지 특수 단어 (예제의 $ 예외)를 제외하고 싶습니다.

이 같은 것을 할 수있는 : 귀하의 질문에서 요구하는

function createSchoolName($school) { 
     $exceptions = array('SMK', 'PTS', 'SBP'); 
     $result = ""; 
     $words = explode(" ", $school); 
     foreach ($words as $word) { 
      if (in_array($word, $exceptions)) 
       $result .= " ".$word; 
      else 
       $result .= " ".strtolower($word); 
     } 
     return trim(ucwords($result)); 
    } 

echo createSchoolName('SMK SUNGAI PUNAI'); 

이 예는 SMK Sungai Punai을 반환합니다. 당신이 뭔가를 사용할 수 있습니다

+0

감사 코드입니다. 그것은 슈퍼 영웅처럼 일했습니다. – kampit

1

정말 좋은 방법은 없습니다. 이 경우에는 길이가 3 자이고 모음이 없기 때문에 약어라고 가정 할 수 있습니다. 문자열에서 약어를 찾은 다음 대문자로 만드는 규칙 집합을 작성할 수는 있지만 어떤 경우에는 불가능합니다 ... "BOB PLAYS TOO MUCH WOW."를 고려하십시오.

0

:

<?php 
$str = 'SMK SUNGAI PUNAI'; 
$str = strtolower($str); 
$arr = explode(" ", $str); 

$new_str = strtoupper($arr[0]). ' ' .ucfirst($arr[1]). ' ' .ucfirst($arr[2]); 
echo '<p>'.$new_str.'</p>'; 

// Result: SMK Sungai Punai 
?>