3

入力例:SMK SUNGAI PUNAI

私のコード:

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

不要な出力:Smk Sungai Punai

質問

ALL-CAPSのままで出力 SMK Sungai Punaiできるようにする方法。SMK

アップデート。

私が10,000の学校名のリストを持っている問題。PDF から mysql に変換します。学校名をすべて大文字で PDF から正確にコピーしました。

条件付きタイトルケースを実装するにはどうすればよいですか?

4

4 に答える 4

3

私が理解している限り、すべての学校名のすべての単語の最初の文字を大文字にし、いくつかの特別な単語(私のサンプルでは$ exceptions)をこの処理から除外したいと考えています。

あなたはこのようにそれをすることができます:

   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、質問の必要に応じて返されます。

于 2010-07-14T20:19:57.267 に答える
1

それを行うには本当に良い方法はありません。この場合、3 文字の長さで母音が含まれていないため、略語であると想定できます。文字列内の略語を検索して大文字にする一連のルールを作成することはできますが、場合によってはそれが不可能になることもあります...「BOB PLAYS TOO MUCH WOW」を考えてみてください。

于 2010-07-14T19:14:26.760 に答える
-1

次のようなものを使用できます。

<?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
?>
于 2010-07-14T20:25:23.483 に答える