我正在尝试将 drupal 安装转换为由 Code Igniter 驱动的前端。这是一个实验项目,用于检查我可以获得的性能提升。但我面临的最大问题是 Drupal 中很少有字段存储 php 字符串。例如
<?php print "A"; ?>
This is normal
现在我可以看到来自我在 Code Igniter 中运行的查询的文本“这是正常的”,但我没有看到保存在表中的 php 函数。通过phpmyadmin查看记录时可以看到文字。但不知何故不在 CI 查询结果中。
我正在尝试将 drupal 安装转换为由 Code Igniter 驱动的前端。这是一个实验项目,用于检查我可以获得的性能提升。但我面临的最大问题是 Drupal 中很少有字段存储 php 字符串。例如
<?php print "A"; ?>
This is normal
现在我可以看到来自我在 Code Igniter 中运行的查询的文本“这是正常的”,但我没有看到保存在表中的 php 函数。通过phpmyadmin查看记录时可以看到文字。但不知何故不在 CI 查询结果中。
我希望你有解决方案。但以防万一您还没有尝试过:
我创建了一个包含两列的表
//$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; } }
echo $result['code']
print_r($result)
var_dump($result)
highlight_string($result['code'])
eval($result['code'])
str_replace
是eval($result['code'])
.在那里你可以看到 1,2 和 5 产生的 Result 是空的。但是,当您针对空白空间检查元素时,它会清楚地显示回显/打印的字符串已被注释掉。
屏幕截图。
这与codeigniter无关。它由HTML Parser完成。所以解决办法就是去掉PHP的开始和结束标签,然后使用eval。我希望这有帮助。
谢谢您的帮助。是的,最后的手段是 eval 函数,它帮助我实现了我想要它做的事情。
数据库中的数据具有 PHP 函数,只有 eval 函数能够将该部分视为 PHP 代码并在我获取视图中的数据时执行它。