2011-02-16 15 views
1

どのような種類の括弧内にあってもすべての単語を大文字にしたい(<> [] {})。ユニコード文字も大文字にする必要があります。例えばPHPは大括弧で大文字の文字列を大文字にします

:私は非常に長い時間

function ucwords2($str) 
{ 
    $str = strtolower($str); 
    $str = preg_replace('/(?<![a-z]\')\b[a-z]/e', 'strtoupper(\'$0\')', $str); 
    return $str; 
} 

ため、この機能を使用していたが、それが使用できなくなったので、今、私はUnicodeのサポートを必要とする

Ti Si Želva (Čestitke) 

ti si želva (čestitke) 

が生じるはずです。

ありがとうございました!ここで

答えて

2

は私のためにどのような作品だ:

$txt='ti si želva (čestitke)'; 
echo mb_convert_case($txt,MB_CASE_TITLE,'utf-8'); 

はそれを手に入れましたか?

+0

ニースの答えを。一般的な規則として、Unicodeに切り替えることは、文字列関数のmb_ *に相当するものを使用してファイルをUTF-8として保存し、正規表現に 'u'フラグを追加することを意味します。 –

+0

これはまさに私が必要としていたものです。しかし1つの問題です。それはまた、 "または"の後ろの文字を大文字にするので、 "それは"それが "それ"になります – Paxxil

+0

mb_ereg_replaceの解決策はありますか? – Paxxil

0

私はisLower()関数がユニコード対応であると思うので、これは文字をチェックするより良い方法だと思います。これを正規表現にどのようにすることができるか分かりません。

0

これを試してください:あなたは配列に欲しいものを追加することができます

function to_up($txt){ 
    $up=mb_convert_case($txt,MB_CASE_TITLE,'utf-8'); 
    return strtr($up, 
     array(
      "'S"=>"'s", 
      "'D"=>"'d", 
      "'L"=>"'l" 
     ) 
    ); 
} 

$txt="john, it's all your fault!"; 
echo to_up($txt); 

注...

関連する問題