【问题标题】:PHP - How to include php script without it running before includingPHP - 如何在包含之前不运行的情况下包含 php 脚本
【发布时间】:2014-04-10 20:19:22
【问题描述】:

在我的文件 index.php 我已经包含了来自另一个文件的文本。

<title>
  <?php

  $title = "";
  if (basename(__FILE__, ".php") == "index") {
    $title = "Home";
  } else {
    $title = ucfirst(basename(__FILE__, ".php"));
  }

  echo $title;
  ?>
</title>

我猜你可以看到我做了什么,如果没有,那么它应该将标题设置为文件的基本名称。假设你有一个名为 downloads.php 的文件,那么这个脚本的标题就是 Downloads。但是我有这个问题,我不知道如何解决。当我包含文本时。

<head>
  include "filename.php";
</head>

我的问题是当我包含文本时,“脚本”在它包含之前运行。假设您包含的文件的名称是 filename.php 并且包含文本的主页是 main.php,那么标题将是 Filename 而不是 主要。我想要包含文本而不是直接粘贴到 main.php 的原因是,如果您有多个文件需要完全相同的代码,编辑起来会容易得多。

我希望你明白我的要求,并且你能够帮助我。

【问题讨论】:

  • 这就是 PHP 的全部意义所在。

标签: php file include


【解决方案1】:

试试$_SERVER['SCRIPT_NAME']:

if (basename($_SERVER['SCRIPT_NAME'], ".php") == "index") {
    $title = "Home";
  } else {
    $title = ucfirst(basename($_SERVER['SCRIPT_NAME'], ".php"));
}

【讨论】:

    【解决方案2】:

    您似乎正在尝试建立一个简单的系统来将您的页面分解为“子页面”。好主意。但与其依赖文件名,不如设置一个变量?例如:

    page_title.php:

    <?php
    echo "<title>" . $title . "</title>";
    

    index.php:

    <?php $title = "Home"; ?>
    <head>
        <?php include "page_title.php"; ?>
    </head>
    

    some_other_page.php:

    <?php $title = "Some Other Page"; ?>
    <head>
        <?php include "page_title.php"; ?>
    </head>
    

    对于您想要的任何其他页面也是如此......

    实际上,您可能希望封装页面的整个 &lt;head&gt;&lt;/head&gt; 部分。

    最后,与其重新发明轮子,不如看看一些 PHP 的模板引擎。我喜欢Smarty,但还有其他人。这些模板引擎可以编写模板文件(必要时包括其他模板),并且可以轻松地将变量简单地传递给模板并呈现您的 HTML。

    【讨论】:

    • 重点是让它自动化,这样我就不必每次创建新页面时都自己做。但无论如何,谢谢,我将研究这些引擎。听起来是个好主意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    相关资源
    最近更新 更多