gpt4 book ai didi

php - 回显整个预编译的 php 页面

转载 作者:行者123 更新时间:2023-12-04 05:36:04 25 4
gpt4 key购买 nike

例如,如果我有脚本:

<?php

$page = "My Page";
echo "<title>" . $page . "</title>";
require_once('header.php');
require_once('content.php');
require_once('footer.php');


?>

有什么我可以添加到该页面底部以显示整个预编译 php 的内容吗?

我想从字面上回应 php 代码,而不是编译它。

所以在我的浏览器中,我会以代码形式看到以下内容...
// stuff from main php
$page = "My Page";
echo "<title>" . $page . "</title>";

// stuff from require_once('header.php');
$hello = "Welcome to my site!";
$name = "Bob";
echo "<div>" . $hello . " " . $name . "</div>";

// stuff from require_once('content.php');
echo "<div>Some kool content!!!!!</div>";

// stuff from require_once('footer.php');
$footerbox = "<div>Footer</div>";
echo $footerbox;

这可能吗?

最佳答案

没有办法在 PHP 中实现它,但是如果你只是想要一些非常简单和非健壮的东西,你可以尝试破解它:

<?php
$php = file_get_contents($_GET['file']);

$php = preg_replace_callback('#^\s*(?:require|include)(?:_once)?\((["\'])(?P<file>[^\\1]+)\\1\);\s*$#m', function($matches) {
$contents = file_get_contents($matches['file']);
return preg_replace('#<\?php(.+?)(?:\?>)?#s', '\\1', $contents);
}, $php);

echo '<pre>', htmlentities($php), '</pre>';

备注:
  • 警告:允许像我对第一行所做的那样进行任意文件解析是一个安全漏洞。自己做认证、路径限制等
  • 这不是递归的(尽管这样做不需要做太多工作),因此它不会处理其他包含文件中的包含文件等等。
  • 正则表达式匹配并不健壮,而且非常简单。
  • 假定包含的文件在字符串中是静态命名的。诸如 include($foo); 之类的东西或 include(__DIR__ . '/foo.php');不会工作。

  • 免责声明:本质上,要正确执行此操作,您需要实际解析 PHP 代码。我只提供上述内容,因为这是一个有趣的问题,而且我很无聊。

    关于php - 回显整个预编译的 php 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11915891/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com