4

我正在使用 PHP 包括:

<?php include 'file1.php'; ?>

我只想包含 file1.php 的前几行 - 这可能吗?

4

5 回答 5

0
<?php
  $return_from_inc = include('file1.php');
?>

文件1.php

<?php
  if ($x === 1) { return 'A'; }
  else { return 'B'; }
  //... return ("break") running script wherever you want to
?>
于 2013-09-18T08:01:04.880 回答
0

根据这些第一行的内容,您为什么不使用 PHP 函数?

文件1.php

<?php
    function what_i_want_to_include(){

      //"First lines" content

    }
}

现有的.php

<?php
include('file1.php');

what_i_want_to_include();

?>

使用函数是最简单的方法。

于 2013-09-18T08:02:09.993 回答
0

如果你真的想include(作为 PHP 运行),那么只需将这些行拉到一个新文件中:

新的.php

<?php

// line 1
// line 2

并将其包含在两个文件中:

现有.php和other.php

<?php
include('new.php');

...
于 2013-09-18T07:54:13.080 回答
0

您可以简单地使用return您选择的线路,并将控制权发送回调用文件。

如果从函数内部调用,return 语句会立即结束当前函数的执行,并将其参数作为函数调用的值返回。return 还将结束 eval() 语句或脚本文件的执行。

如果从全局范围调用,则结束当前脚本文件的执行。如果包含或需要当前脚本文件,则将控制权传递回调用文件。此外,如果包含当前脚本文件,则返回的值将作为包含调用的值返回。如果从主脚本文件中调用 return,则脚本执行结束。如果当前脚本文件由 php.ini 中的 auto_prepend_file 或 auto_append_file 配置选项命名,则该脚本文件的执行结束。

来源:PHP 手册

于 2013-09-18T08:09:11.100 回答
0

有几个选项可以实现这一点,但让我强调一下,如果这对于您的应用程序工作是必要的,您应该真正考虑审查应用程序设计。

如果您希望以编程方式使用它,您可以获取前 x 行并使用 eval() 来解析它们。例子:

$file_location = '/path/to/file.php';
$number_of_lines = 5; //

$file_array = file($file_location);
if(!$file) {
    return false; // file could not be read for some reason
}
$first_lines = array_slice($file_array, 0, $number_of_lines);
$to_be_evaluated = implode('', $first_lines);
eval($to_be_evaluated);

但是你不应该认为 eval 期望一个没有 php 开始标记 ( <?php) 的字符串,至少,不是在开始时。所以你应该搜索它并在第一行删除它(如果存在):

if(strpos($first_lines[0], '<?php') !== false) {
    $first_lines[0] = substr(strpos($first_lines[0], '<?php') + 5);
}

另一个更好的选择,如上所述,只需拉出所需的行,将它们保存到另一个文件中,然后将它们包含在两者中。您也可以以编程方式执行此操作,您甚至可以提取所需的行并将它们即时保存到临时文件中。

编辑这是一个“奇怪”的问题,因为它不应该是必要的。你能解释一下你到底想做什么吗?很可能我们可以想出一个不错的选择。

编辑

正如我正确理解的那样,您在要包含的文件中有很多东西,但只需要数据库设置。在这种情况下,把它们放在别处!例子:

设置.php

$connection = new mysqli($host, $user, $pass, $db);
if($connection->connect_error) {
     die('This failed...');
}

头文件.php

<?php require_once('settings.php'); ?>
<html>
    <head>
        <title>My awesome website</title>
        ... other stuff
    </head>

other_file.php

<?php
require_once('settings.php');
$r = $connection->query('SELECT * FROM `my_table` WHERE `random_field`=`random_value`');

等等等等

在 settings.php 中,您还可以将所有内容放入函数中,以确保仅在需要时执行片段。例如,您可以创建一个get_connection()函数,该函数检查数据库连接是否存在,否则创建它并返回以供使用。

根本不需要花哨的eval()功能!

请记住,将您的应用程序分成一千个文件并不构成犯罪。真的不是!

于 2013-09-18T08:10:58.027 回答