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が動いていて、そのせいで無名関数がまともに動かなかった。 まじくそっすわー凸(☎︎ω☎ )凸