foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

CodeIgniter ショートオープンタグ

CodeIgniter では独自にショート オープン タグを実装している。
ROOT/system/application/config/config.php で機能の有効・無効を設定できる。
rewrite_short_tags を設定することでショートタグが使えるようになる。

ROOT/system/libraries/Loader.php
if ((bool) @ini_get('short_open_tag') === FALSE
AND config_item('rewrite_short_tags') == TRUE){
    echo eval(
        '?>'.preg_replace(
            "/;*\s*\?>/",
            "; ?>",
            str_replace(
                '<?=',
                '<?php echo ',
                file_get_contents($_ci_path)
            )
        ).'<?php '
    );
}


最初に PHP タグを閉じて、最後に開いているのは eval() しているから。
eval() している場所は PHP タグ内にある。
そのため、一度 PHP から抜け出して eval() してから再び PHP の世界に戻る。