4

drupal インストールを Code Igniter によって駆動されるフロント エンドに変換しようとしています。これは、私が得ることができるパフォーマンスの向上を確認するための実験的なプロジェクトです。しかし、私が直面している最大の問題は、Drupal のほとんどのフィールドが php 文字列をそのまま格納することです。例えば

<?php print "A"; ?>

This is normal

Code Igniter で実行したクエリからの「This is normal」というテキストが表示されるようになりましたが、テーブル内に保存されている php 関数は表示されません。phpmyadmin でレコードを表示すると、テキストが表示されます。しかし、どういうわけかCIクエリの結果の中ではありません。

4

2 に答える 2

1

Uが解決策を持っていることを願っています。ただし、これを試していない場合に備えて:
I created a table with two columns
表の内容

//$result Contains the data fetched from the table using a model.
foreach ($result as $key=>$val) {
   if($key == 'code') {
      $val = str_replace('<?php','',$val); //Remove PHP's opening tag.
      $val = str_replace('?>','',$val); //Remove PHP's closing tag.
      $val = rtrim($val); //Remove leading and trailing spaces.
      echo $key.': ';
      eval($val.';'); //Execute the PHP code using eval.
    } else {
       echo $key.': '.$val.PHP_EOL;
    }
 }


私は試した
  1. echo $result['code']
  2. print_r($result)
  3. var_dump($result)
  4. highlight_string($result['code'])
  5. eval($result['code'])
  6. 最後にstr_replaceが続きeval($result['code'])ます。

ここ から取得した結果のスクリーンショットを確認してください。

1、2、および 5 によって生成された Result が空であることがわかります。しかし、空のスペースに対して要素を検査すると、エコー/印刷された文字列がコメントアウトされていることが明確に示されます。

スクリーンショット.

これは codeigniter とは関係ありません。HTML Parserによって行われます。解決策は、PHP の開始タグと終了タグを削除してから、eval を使用することです。これが役立つことを願っています。

于 2013-04-16T07:28:14.453 に答える
0

助けてくれてありがとう。はい、最後の手段は eval 関数でした。これは、私が望んでいたことを達成するのに役立ちました。

データベース内のデータには PHP 関数があり、eval 関数のみがその部分を PHP コードとして処理し、ビュー内のデータを取得するときに実行できました。

于 2013-04-16T08:23:56.163 に答える