2010-07-14 16 views
1

例如在我的數據庫ucwords大寫SMK SUNGAI PUNAI如何保持一些字來

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

輸出繼電器Smk Sungai Punai

問題

如何使輸出將SMK Sungai Punai其中SMK仍大寫。

更新。

問題我有10K學校名單。從PDF我轉換爲MySQL。我完全從PDF中複製了學校的名字。全部使用大寫字母。如果可以完成,我需要一個解決方案。

+1

你能確定此基礎上元音的詞是?另外,你有這些大寫字母的列表嗎? – Incognito 2010-07-14 19:11:33

+0

請描述你的問題,而不是一個不工作的解決方案。輸出通過api的預期結果有效。根據什麼規則,你想要大寫或小寫或大寫字母開頭的單詞嗎? – stefanglase 2010-07-14 19:15:43

回答

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

謝謝codescape。它像一個超級英雄一樣工作。 – kampit 2010-07-14 21:09:05

1

有沒有真正好的方法來做到這一點。在這種情況下,你可以假設它是一個縮寫,因爲它只有三個字母,並且不包含元音。你可以編寫一套規則,在字符串中查找縮寫,然後將其大寫,但在某些情況下,這是不可能的......考慮「BOB玩得太多了。」

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