6

PHP 文字列内のすべての単語を大文字にしようとしていますが、関数は、直後に括弧が続く単語を検出していません。括弧の直後の単語が大文字になるようにするにはどうすればよいですか?

例: アムハラ語 (エチオピア語) .... アムハラ語 (エチオピア語)

(現在 ucwords() を使用して、PHP はアムハラ語 (エチオピア語) を表示します)

4

6 に答える 6

17

これは既知のバグで、開き括弧と最初の文字の間に空白が必要です。回避策は次のとおりです。

$var = "amharic (ethiopian)";

echo str_replace('( ', '(', ucwords(str_replace('(', '( ', $var)));

結果

アムハラ語 (エチオピア)

デモを見る

于 2013-03-29T01:35:08.257 に答える
7

これを試してみてください、私はそれを試しました、

$text= "amharic (ethiopian)";
echo mb_convert_case($text, MB_CASE_TITLE, "UTF-8");

出力 : アムハラ語 (エチオピア語)

注: PHP の mbstring 関数を有効にするようです。

于 2013-03-29T01:40:53.203 に答える
0

preg_replace ( http://php.net/manual/en/function.preg-replace.php ) と正規表現のようなもので解決できるはずです/[A-Z][a-zA-Z]*/

于 2013-03-29T01:36:34.473 に答える
0

問題は、phpがスペースの後の最初の文字を大文字にすることであり、ブラケットはスペースの後の単なる文字であるため、単語の最初の文字を大文字にする必要があり、他の文字がそれに続くと見なされるためだと思いますこの世界のキャラクターとして

したがって、これを回避するには、角かっこと文字の間にスペースを空ける必要があると思います。そうすれば、php は角かっこを単語の開始文字ではなく単一の文字として検出できます:)

于 2013-03-29T01:37:11.903 に答える