7

簡単に言うと、Smartyと|capitalize修飾子を使用しています。l正常に機能しますが、単語の先頭になくても、単語を渡すと大文字になります。

なぜですか?

編集:同じことが。でも起こりpます。

テスト:

{"abcdefghijklmnopqrstuvwxyz"|capitalize}
{"aaal aala alaa laaa"|capitalize}
{"aaap aapa apaa paaa"|capitalize}

出力:

AbcdefghijkLmnoPqrstuvwxyz
AaaL AaLa ALaa Laaa
AaaP AaPa APaa Paaa
4

2 に答える 2

5

PHP のucfirst関数を使用することもできます

{"aaal aala alaa laaa"|@ucfirst}

これにより、

あぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ

于 2011-06-27T15:06:55.577 に答える
2

ucfirst()Smarty は主に、PHP で設定されている現在のロケールの影響を受けるものに依存しています。これが大文字化関数 (ucfirst、strtolower、strtoupper など) にどのように影響するかについての正確な情報を見つけることはできませんでしたが、ロケールをen_US.UTF-8(私のサーバーで機能するもの) に設定してみて、それが出力にどのように影響するかを確認してください。

ロケールを表示:

var_dump(setlocale(LC_CTYPE, null));

ロケールを変更:

setlocale(LC_CTYPE, "en_US.UTF-8");

アップデート

一部の調査では、customer 修飾子が、修飾子のローカルを選択するか、テンプレート ファイルからロケールを設定するカスタム関数を選択するように記述されているいくつかのアーカイブにつながります。

ソース 1 ソース 2

これを再現できませんでした。それはあなたが使用しているフォントでしょlうか?コード例はありますか?

Smarty v2 で

{assign value="let go" var="go"}
{$go|capitalize}
<br/>
{assign value="allow me" var="me"}
{$me|capitalize}

出力

Let Go
<br/>
Allow me

于 2011-06-22T20:32:09.193 に答える