yuicho@brain:~# tail -f /dev/memory

備忘録。このブログについては https://yuicho.hateblo.jp/about を見やがれ。

bindする関数(PHP編)

時々PHPでテキストファイルに変数をbindして使いたいって思うことがあるから、そんなときに便利な関数を作ってみた。

いわゆるテンプレートエンジンってやつかな。

$str = "bbbbb__test__c __aaa__ ccc";
 
echo bindTemplate($str, array('test'=>'うわーい'));
echo bindTemplate($str, array('test'=>'ぽぷて', 'aaa'=>'ぴぴっく'));
 
function bindTemplate($template, $param, $pattern='/__(.+?)__/')
{
    return preg_replace_callback(
        $pattern,
        function ($matches) use($param){
            $original = $matches[0];
            $key = $matches[1];
 
            if ( array_key_exists($key, $param) ){
                return $param[$key];
            }else{
                return $original;
            }
        },
        $template
    );
}
//?>

↓実行結果はこうなる↓

bbbbbうわーいc __aaa__ cccbbbbbぽぷてc ぴぴっく ccc

余談だけど

これを試している環境でeAcceleratorが動いていて、そのせいで無名関数がまともに動かなかった。 まじくそっすわー凸(☎︎ω☎ )凸