忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/10/17 14:45 |
Smarty-03:カスタム修正子

Smarty/pluginsフォルダあたりを覗いてみると、modifier.escape.phpといったファイルが並んでいます。
実はこれが修正子の正体です。
仕組みは単純で、Smarty内で{$data|escape}という修正子が現れたらmodifier.escape.phpを読み込み、その中のsmarty_modifier_escapeという関数を実行するということになっています。

ところでtruncate修正子に日本語を突っ込むと、区切る文字数も正しくないし区切ったところが文字化けしたりします。
modifier.truncate.phpを見てみると、文字を区切るときにsubstrを使用しています。
substrは日本語に対応していないのでtruncate修正子では日本語を扱うことができません。

そこで日本語に対応したmb_truncate修正子を作成してみましょう。

まずpluginフォルダ内にmodifier.mb_truncate.phpを作成。
中身は簡単にこんなかんじ。

modifier.mb_truncate.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    
    function smarty_modifier_mb_truncate($string, $length = 80, $etc = '...'){
        //引数
            $length+=0;
            if(!$string || $length == 0){return '';}
        
        //返却
            if(mb_strlen($string)>$length){
                //長ければ切って返す
                return mb_substr($string,0,$length).$etc;
            }else{
                //短ければそのまま
                return $string;
            }
    }


使用するときはテンプレートに
{'あいうえお'|mb_truncate:3}
と書くだけです。
これで自動的にmb_truncate修正子を利用してくれます。

さて、このmb_truncateはSmarty改造の入り口みたいなもので、色々なサイトで解説されています。

http://webtech-walker.com/archive/2007/04/26154112.html
http://jbar.jp/ishimaken/xoops/
http://c-brains.jp/blog/wsg/07/06/14-160910.php

一番下のソースと全く同じことになってますが本当に偶然ですから。
誰が書いてもこんなもんだって。

 

PR


2009/07/06 18:46 | Comments(0) | TrackBack(1) | PHP

トラックバック

トラックバックURL:
前カスタム修正子を作成しましたが、同じフォルダにfunction.html_select_date.phpといったファイルがあるのに気付いた人もいるかもしれません。 言うまでもなく{html_select_date}です。 というわけでカスタム関数も簡単に作成することができます。 今回は試しに{now}を作ってみます。 Smartyは{$smarty.now}でタイムスタンプを返してくれるのですが、マニュアルにあるとおり実行した時点でのタイムスタンプが返ってきます。 {$sma...
弱小PHPerの憂鬱 | 2009/07/28 15:05

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<JavaScript2-9:JavaScriptで犯罪者作成装置 | HOME | 脳内百万本ディレクターDAKINI>>
忍者ブログ[PR]