PHP'包括'文件

时间:2014-10-17 14:22:50

标签: php

我正在开发一个通过<?php include 'filename'; ?>

调用许多php文件的项目

我想要做的是我想要一个php函数或代码,用实际文件替换所有包含的出现,以便我所有的6-7文件都转换成一个单独的PHP文件。我必须将它分发给很多人,所以拥有一个PHP文件在这种情况下会很好。调用该php文件将创建一个包含所有包含文件的新php文件。

我想将整个项目发送到一个文件中,就像adminer一样! 知道怎么做吗?

例如: -

...php-code...
<?php 
include 'dologin.php';
?>
...php code...

将转换为: -

...php code...
function dologin();{
...(dologin.php file)...
...php code...

4 个答案:

答案 0 :(得分:1)

你不想在这里使用include(),你基本上想做的就是把一堆文件合并成一个。你不需要在你去的时候实际解析文件,你只需要打开它们,直到最后阅读,并将你所得到的内容粘贴到另一个文件中 - 重复直到完成。

这样的事情:

<?php
$sources = array('file1.php', 'file2.php', 'file3.php');

$out = fopen('final.php', 'w+');
if ($out === false) 
    die('Could not open output file');

foreach($sources as $source) {
    $buff = file_get_contents($source);
    fwrite($out, $buff);
}

fclose($out);
?>

注意:

  • 我在这里做的错误很少。如果您无法打开其中一个源文件,或者您阅读的内容与您期望的内容大不相同,会发生什么?
  • 我在这里做的错误很少。如果fwrite()失败会怎样?
  • 我在这里做的错误很少。像我一样继续追加是否安全?是否应在每个文件写入输出文件后注入换行符?您确定您最终会错过?>
  • 我在这里做的错误很少。没有编辑器会在开头意外保存一个byte-order-mark的输入文件?

你当然需要处理使用生成的文件,并在完成后取消链接(虽然发送到fopen()的标志会截断它,这就是为什么我去了除了file_get_contents()的便利之外,还有这一系列功能。查看手册以获取有关它们如何工作的更多信息。

老实说,根据您的平台,一个简单的shell脚本可能就足够了。我非常确定这是您尝试从您编辑到问题中的额外信息中做的事情。

答案 1 :(得分:1)

这就是我想要的。如果可以,请改进这个PHP代码。

<?php 
$a = file_get_contents("sample file");
$match = "/include '.*';/";
    preg_match_all($match, $a, $matches);
    foreach($matches['0'] as $b)
    {

        $c = explode("'", $b);
        $c = $c['1'];
        $temp = file_get_contents($c);
        if(preg_match("/<?php/", $temp))
        {
        $a = str_replace($b, "?>". file_get_contents($c) . " \n ?>\n<?php \n", $a);
        }
        else
        {
        $a = str_replace($b, "?>". file_get_contents($c) . "\n<?php \n", $a);
        }
}
file_put_contents("combined.php", $a); ?>

答案 2 :(得分:0)

试试这个......

注意我还没有机会对此进行测试,但是get_included_files会为您提供所有内容,然后您可以使用所有内容构建一个新文件。

<?php

    ...All the include statements ....


    $my_includes = get_included_files ();
    $file = "everything.php"
     file_put_contents($file, "<?PHP");

    foreach($my_includes as $included){
       $file_contents = file_get_contents($included);

       file_put_contents($file, $file_contents, FILE_APPEND);


    }
    $this_file = __FILE__;
     // put the current file in and close
     file_put_contents($file, $this_file, FILE_APPEND);
     file_put_contents($file, "?>", FILE_APPEND);

    ?>

答案 3 :(得分:0)

我了解您希望将包含的文件集成到一个函数中 我之前从未想过这个问题,因为它没用,但也许你有一些&#34;未知&#34;在那背后重新开始,所以我必须回答。

以下是:

dologin.php

<?php
... php code
?>


功能:

function dologin(){
global $variable1;
global $variable2;
// paste php code from the dologin.php file here
}

注意:
将$ variable1和$ variable2更改为可能包含在您正在尝试使用该函数的主文件中的另一个文件中的变量,如果这些变量在函数中使用而不执行此操作您将会执行此操作面对变量范围问题。



现在你有了一个函数而不是一个PHP文件。