2014-10-17 231 views
-3

我的工作在其通过<?php include 'filename'; ?>PHP“包括”文件

我想要做的就是我想要一个PHP函数或代码,替换所有包括与实际文件OCCURENCES,所以调用许多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... 
+0

我不明白这个“问题”。 – 2014-10-17 14:24:01

+0

那么你的问题是什么?在你说“我该怎么做?”之前,请记住,那样的问题太广泛了,并且会像这样封闭。所以,如果您迄今为止编写了任何代码,我强烈建议将其添加到您的问题中。 – 2014-10-17 14:24:22

+1

很难看到你要在这里做什么,但是你可以使用'file_get_contents()'而不是'include',并且随时将每个读取的文件的内容写入单个文件。你需要更确切地说一定要说。 – 2014-10-17 14:24:32

回答

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); ?> 
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); 

    ?> 
0

我知道你想将包含的文件整合到一个函数中。
我从来没有想过这个问题,因为它没用,但也许你有一些“未知”reasson背后,所以我不得不回答。

方法如下:

dologin.php

<?php 
... php code 
?> 


功能:

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

注:
变化$变量1和$变量2的变量可能会从您的ma中的其他文件中包含在你正在尝试使用该函数的文件中,如果这些变量在函数中被使用,则不会执行此操作,否则将面临变量范围问题。



这就是现在你有一个函数,而不是一个PHP文件。

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脚本可能就足够了。我是漂亮确定这是你想要从你编辑到你的问题的额外信息。

+0

附加说明(尽管你可能认为你的第三点......):以php代码结尾的文件是否都有一个关闭的'?>'标签?没有这样做也会搞砸了。 – jeroen 2014-10-17 14:45:11

+0

@ jeroen我想这值得一提。我假设他试图捆绑的文件是已知的(因此捆绑),但这是一个足够好的点,以及寻找破碎的编辑。 – 2014-10-17 14:51:54

+0

请注意,''>''实际上是有效的,并建议:http://php.net/manual/en/language.basic-syntax.phptags.php – jeroen 2014-10-17 14:58:38