显示包含require语句的页面代码

时间:2014-10-09 15:11:48

标签: php html file

我试图将php文件的代码显示为普通的html。这一切都很顺利,除了我希望它打开的事实。 <?php require 'Main_content_bar.php'; ?>陈述也是如此。

到目前为止,我show_source($page);正常工作。

目前正在打印:

<?php require 'Main_content_bar.php'; ?>

<!-- Jumbotron -->
<div class="jumbotron">
    <h1>Property</h1>

    <p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus
        commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet.</p>

</div>


<div class="row">
    <div class="col-md-12">
        <h2>Current properties</h2>



    </div>
</div>


<div class="footer">
    <p><a href="Source_code.php" target="_blank"> <img src="Images/codebutton<?php echo $page_lower;?>.jpg" alt="<?php echo $page;?> Source"> </img>
        </a></p>

    <p>&copy; Robin B'stards Retail 2014</p>
</div>


</body>
</html>

但是,正如可以看到的那样,require语句的内容没有显示出来。我不能为我的生活弄清楚如何做到这一点。

所以最终看起来像是这样的东西:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">

    <script src="jquery-2.1.1.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<!--    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jquery.bootstrapvalidator/0.5.2/css/bootstrapValidator.min.css"/>-->
<!--    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery.bootstrapvalidator/0.5.2/js/bootstrapValidator.min.js"></script>-->
    <link href="justified-nav.css" rel="stylesheet">
    <script>
        $(function(){
            var url = window.location.href;
            var page = url.substr(url.lastIndexOf('/')+1);
            $('.nav a[href*="'+page+'"]').parent().addClass('active');
        });
    </script>
</head>
<body>
<div class="container" style="width: 1263px">

    <div class="masthead">
        <h3 class="text-muted">Ruthless Real Estate</h3>
        <ul class="nav nav-justified">
            <li class="menu"><a href="Property.php">Property</a></li>
            <li class="menu"><a href="Client.php">Client</a></li>
            <li class="menu"><a href="Type.php">Type</a></li>
            <li class="menu"><a href="Feature.php">Feature</a></li>
            <li class="menu"><a href="Multiple_properties.php">Multiple Properties</a></li>
            <li class="menu"><a href="Property_features.php">Property Features</a></li>
            <li class="menu"><a href="Images.php">Images</a></li>
        </ul>
    </div>
<!-- Jumbotron -->
<div class="jumbotron">
    <h1>Property</h1>

    <p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus
        commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet.</p>

</div>


<div class="row">
    <div class="col-md-12">
        <h2>Current properties</h2>


    </div>
</div>


<div class="footer">
    <p><a href="Source_code.php" target="_blank"> <img src="Images/codebutton<?php echo $page_lower;?>.jpg" alt="<?php echo $page;?> Source"> </img>
        </a></p>

    <p>&copy; Robin B'stards Retail 2014</p>
</div>


</body>
</html>

注意缺少必需的陈述

1 个答案:

答案 0 :(得分:1)

你不能用show_source做到这一点,$new_content = file_get_contents('your-file.php'); $base_path = __DIR__.'/'; // pattern to find require, require_once, include, include_once functions // and catch their arguments $pattern = "#<\?php (?:require|include(?:_once)?)\s*'(.*)'; \?>#u"; if (preg_match_all($pattern, $new_content, $matches)) { foreach($matches[0] as $pattern_index => $full_pattern) { $file = $matches[1][$pattern_index]; $subcontent = file_get_contents($base_path.$matches[$pattern_index]); $new_content = str_replace($new_content, $full_pattern, $subcontent); } } highlight_string($new_content); 只是“显示文件的一些代码来源”。

您需要创建自己的函数,在参数中使用文件名,然后您必须像这样分析源:

  • 用自己的内容替换所有require / include / require_once / include_once(我会忘记什么?)
  • 使函数递归(因为Main_content_bar.php可以在其中包含其他包含)
  • 在功能结束时使用highlight_string

编辑搜索&amp;替换,单向(有几种)是使用preg_match_all。代码的那部分看起来像这样:

{{1}}