Dittoで出力文字数をlimitで指定する場合の罠。 | MODxでハマるありがちな罠と解決法

Dittoで出力文字数をlimitで指定する場合の罠。

日本語環境だと、例えば、出力するテンプレート変数に日本語が入っていた場合、limit=50とかにすると、文字列によっては、末尾がバイト欠けして文字化けします。
また、文字数もバイト指定になってしまいます。

これは、Ditto内に標準で入っているPHxの関数が、substr()を使用しているためで、これはマルチバイト関数ではないので、日本語だとおかしくなる場合があります。

ですので、直してしまいましょう。(mbstringが使えないとダメですが。)

/assets/snippets/ditto/classes/phx.parser.class.phpの258行目。

$output = substr($output,0,$limit);

$output = mb_substr($output,0,$limit);
に修正。

これでマルチバイトで文字数を指定できます。

PHxを導入している場合はこちらも直しましょう。直す箇所は同一です。
/assets/plugins/phx/phx.parser.class.phpの258行目。

$output = substr($output,0,$limit);

$output = mb_substr($output,0,$limit);
に修正。


Dittoで出力文字数をlimitで指定する場合の罠。
最終更新日
2010.02.09 (火)
最終更新者
Takayuki Hirosawa