美文网首页
php代码存入数据库,如何解析呢?本文为你讲解

php代码存入数据库,如何解析呢?本文为你讲解

作者: 空气KQ | 来源:发表于2019-09-22 16:07 被阅读0次

看了很多的源码和后台,有的会做模板编辑,做一写常量,变量之类,或者是直接写PHP代码,那么他们再输出数据的时候,是怎么输出的的呢?

例如 我把数组写入到数据库里面

<?php
$arr=[
  'text'=>"空气工作室"
];
?>

这个时候,很多犯难了吧
你想直接输出

<?php
$arr['text'];
echo $arr['text'];//这样还是输出字符串,怎办呢
?>

目前就借鉴帝国CMS的做法,用文件输出法,再来读取
将PHP代码写入到文件

$arr=[
  'text'=>'空气工作室'
];
$dir=__DIR__.'/';

$text="<?php\n".' $arr='.var_export($arr,true).";\n".' echo $arr["text"];?>';
file_put_contents($dir.'/tmp/a.php',$text );

这里随便写个存入文件

<?php
<?php
 $arr=array (
  'text' =>  "空气工作室"
);
 echo $arr["text"];

现在要输出了

$dir=__DIR__.'/';
include_once($dir.'/tmp/a.php');

$string = ob_get_contents();
ob_end_clean();
echo $string;

ob_get_contents();

  • ob_start()把输出那同输出到缓冲区,而不是到浏览器。
  • ob_get_contents得到缓冲区的数据。
  • ob_start()在服务器打开一个缓冲区来保存所有的输出。所以在任何时候使用echo,输出都将被加入缓冲区中,直到程序运行结束或者使用ob_flush()来结束。然后在服务器中缓冲区的内容才会发送到浏览器,由浏览器来解析显示。
  • ob_end_clean会清除缓冲区的内容,并将缓冲区关闭,但不会输出内容

总结

将动态代码写入临时文件里面,然后引入调用输出。

相关文章

网友评论

      本文标题:php代码存入数据库,如何解析呢?本文为你讲解

      本文链接:https://www.haomeiwen.com/subject/imfuuctx.html