修飾子プラグイン (プラグインによる Smarty の拡張) - PHPプロ!マニュアル

Smartyマニュアル

プラグインによる Smarty の拡張 - 修飾子プラグイン

修飾子プラグイン

修飾子プラグイン は、テンプレートの変数が表示される前または他のコンテンツに使用される前に適用される関数です。

mixed smarty_modifier_name (mixed $value, [mixed $param1, ...])

修飾子プラグインへの第1パラメータは、この修飾子によって影響を受ける値です。 残りのパラメータはどのような動作が行われるかによって任意です。

修飾子プラグインは処理の結果を 返す 必要があります。

例 16-3. シンプルな修飾子プラグイン

このプラグインは、基本的に組み込みの PHP 関数の名前を変えただけのものです。 追加のパラメータはありません。

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     modifier.capitalize.php
 * Type:     modifier
 * Name:     capitalize
 * Purpose:  文字列の各単語の最初の文字を大文字にする
 * -------------------------------------------------------------
 */
function smarty_modifier_capitalize($string)
{
    return 
ucwords($string);
}
?>

例 16-4. 更に複雑な修飾子プラグイン

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     modifier.truncate.php
 * Type:     modifier
 * Name:     truncate
 * Purpose:  文字列をある長さで切り捨てます。
 *           単語の真ん中で分割させたり、終端に文字列 $etc
 *           を追加したりすることもできます。
 * -------------------------------------------------------------
 */
function smarty_modifier_truncate($string$length 80$etc '...',
                                  
$break_words false)
{
    if (
$length == 0)
        return 
'';

    if (
strlen($string) > $length) {
        
$length -= strlen($etc);
        
$fragment substr($string0$length+1);
        if (
$break_words)
            
$fragment substr($fragment0, -1);
        else
            
$fragment preg_replace('/\s+(\S+)?$/'''$fragment);
        return 
$fragment.$etc;
    } else
        return 
$string;
}
?>

register_modifier() および unregister_modifier() も参照してください。



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)