1

テンプレート変数で HTML テキストの塊を表示しようとしているのですが、PHP が処理されていないようです。私は現在これを私の見解で使用しています(これはcodeigniterです)

<?php dump($_SESSION); echo (isset($html) && !empty($html)) ? $html : show_404(); ?>

HTML には php タグのある場所がいくつか含まれており、ページがエコーされたときにそれらが読み込まれるようにしたいと考えています。これを行う方法はありますか?

渡す HTML 変数から動作させる必要がある主な理由は、これがページ作成者の一部であり、すべてのページにはない php 条件をそこに配置できる必要があるためです。

4

3 に答える 3

1

私は個人的にobこれをファイルからバッファリングしてから、次get_ob_cleanのように結果を取得するために使用します。

    ob_start();
        include 'temp_file_with_html_in';
        $view = ob_get_contents();
    ob_end_clean();

ノート:

  • あなたの英語は不明瞭なので、あなたが何を望んでいるのか正確にはわかりません
  • これはあなたが望むように正確に機能しないかもしれません

たぶん、それが何で$htmlあり、それがどのように供給されているかについてのより良い説明が役立つでしょうか?

于 2012-08-26T20:37:56.213 に答える
1

それを行うには1つの方法がありますが、それは悪いです:eval()

echo (isset($html) && !empty($html)) ? eval($html) : show_404();
于 2012-08-26T20:25:53.920 に答える
0

私が考えることができる最も簡単な方法は(作成方法 を知っていればより良い解決策が見つかる可能性があります$htmlが)、コンテンツをtmpファイルに入れてからインクルードすることです。これは実際には、プログラムにアーキテクチャ上の問題があることを示す警告フラグです(たとえば、$ htmlの作成時にphp補間を実行できないのはなぜですか?)

$tmpFile = tempnam('/tmp', 'my_app_namespace');
file_put_contents($tmpFile, $html);
include $tmpFile;
unlink($tmpFile); // cleanup

Drupal7から編集

コメントでほのめかしたように、Drupal 7には、私がトリックと呼ぶものが実際に含まれています。渡したコードの前にPHPの終了evalタグを追加すると、通常のphpインクルードのように処理されます。

Drupal 7の./modules/php/php.moduleから、79行目あたりで少し適応しています。

ob_start();
print eval('?>' . $html);
$output = ob_get_clean();
于 2012-08-26T20:37:21.547 に答える