「トレーラー/プロモーション」の T と P を大文字にしようとしていますがucwords()
、T のみを大文字にします。これを行う方法はありますか?
注:文字列を操作して各 / をスペースに変換したり、スラッシュに戻したりすることはできません。これは、「Music Video」のようなスラッシュを含むべきではない文字列に対して実行するためです。
ucword は、各単語を ucwording した後に、単語の間隔を空けて再び結合しない限り、それを行いません。簡単な例を次に示します。
implode('/', array_map('ucwords',explode('/','トレーラー/プロモーション')));
上記の単純なコードは、"/" を単語の区切りとして使用して、文字列 "trailer/promo" から配列を作成します。次に、各単語を ( array_map() を使用して) ucwords() で実行します。各単語が ucwords によって処理された後、処理された値を含む配列が同じ「/」を使用して再び結合されます。これが行われるのはたった1行だけです。
使用できる方法は 2 つあります。信頼性の低い、空白がないことを願っているオプション:
str_replace(' ', '/', ucwords(str_replace('/', ' ', "trailer/promo,")));
そして、おそらくより堅牢な方法:
implode('/', array_map(ucwords, explode('/', "trailer/promo,")));
きっと他にも思いつくことがあると思います。たぶんfilter_var()
、どこかに埋もれているようなものがあります。
ucwords の delimiter パラメータのおかげで、PHP 5.4.32 および 5.5.16 以降では、次のように単純です。
ucwords($string, '/');