我的数据库SMK SUNGAI PUNAI
$school = 'SMK SUNGAI PUNAI';
echo ucwords(strtolower($school));
输出Smk Sungai Punai
问题
如何使输出为SMK Sungai Punai
,其中SMK仍为大写。
更新
问题我有10K学校名单。从PDF我转换为mysql。我完全从PDF中复制了学校的名称。全部用大写字母表示。如果可以的话,我需要一个解决方案。
答案 0 :(得分: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
。
答案 1 :(得分:1)
没有非常好的方法可以做到这一点。在这种情况下,你可以假设它是一个缩写,因为它只有三个字母长而且不包含元音。您可以编写一组规则来查找字符串中的缩写,然后将它们大写,但在某些情况下,这将是不可能的......请考虑“BOB PLAYS TO WOW WOW。”
答案 2 :(得分: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
?>