ホームページ >バックエンド開発 >PHPチュートリアル >Smarty truncate の使用に関する質問

Smarty truncate の使用に関する質問

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 13:30:03928ブラウズ

Smarty truncate の使用法に関する質問
{$d.title|truncate:25}
重複したタイトルを表示させたいのですが...

ただ、truncate は数字と数字を組み合わせているようですさまざまな文字、漢字は 1 つの文字
として扱われますが、結局のところ、1 つの漢字のスペースを占めるのに必要な数字は 2 つだけであり、最後に「...」があり、別の文字が必要になります。スペースの 3 文字。
タイトルが不均一にリストされる原因となります。

数字が多いと表示は非常に短くなり、漢字が多いと表示は非常に長くなります。
truncate に数字も半分の文字であると認識させるにはどうすればよいですか?

専門家や退役軍人の方からアドバイスをいただければ幸いです、ありがとうございます!

-----解決策--------------------------------
なぜこれを PHP で処理しないのでしょうか?ヘルプ
------解決策---------
中国語を傍受する機能をカスタマイズします。
------解決策------------------
ああ、わずか 20 分です

次のコードを modifier.mb_truncate.php として保存し、この PHP を Smarty
Usage の下の libs/plugins ディレクトリに置きます: {$d.title|mb_truncate:25}


PHP コード

関数smarty_modifier_mb_truncate($string, $length = 80, $etc = '...', $charset='UTF-8',
                                  $break_words = false、$middle = false)
{
    if ($length == 0)
        戻る '';
 
    if (mb_strlen($string) > $length) {
        $length -= min($length, mb_strlen($etc));
        if (!$break_words && !$middle) {
            $string = preg_replace('/s+?(S+)?$/u', '', mb_substr($string, 0, $length+1, $charset));
        }
        if(!$middle) {
            mb_substr($string, 0, $length, $charset) を返します。
        } それ以外 {
            mb_substr($string, 0, $length/2, $charset) を返します。 $etc . mb_substr($string, -$length/2, (mb_strlen($string)-$length/2), $charset);
        }
    } それ以外 {
        $string を返します。
    }
<div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。