4

我正在尝试将 drupal 安装转换为由 Code Igniter 驱动的前端。这是一个实验项目,用于检查我可以获得的性能提升。但我面临的最大问题是 Drupal 中很少有字段存储 php 字符串。例如

<?php print "A"; ?>

This is normal

现在我可以看到来自我在 Code Igniter 中运行的查询的文本“这是正常的”,但我没有看到保存在表中的 php 函数。通过phpmyadmin查看记录时可以看到文字。但不知何故不在 CI 查询结果中。

4

2 回答 2

1

我希望你有解决方案。但以防万一您还没有尝试过:
我创建了一个包含两列的表
表格内容

//$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_replaceeval($result['code']).

检查从以下获得的结果的屏幕截图:here

在那里你可以看到 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 回答