PHP“包括”文件
我的工作在其通过<?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...
这就是我真正想要的。如果可以,请改善这个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); ?>
尝试......
注意,我还没有机会测试这一点,但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);
?>
我知道你想将包含的文件整合到一个函数中。
我从来没有想过这个问题,因为它没用,但也许你有一些“未知”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文件。
你不想在这里使用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脚本可能就足够了。我是漂亮确定这是你想要从你编辑到你的问题的额外信息。
我不明白这个“问题”。 – 2014-10-17 14:24:01
那么你的问题是什么?在你说“我该怎么做?”之前,请记住,那样的问题太广泛了,并且会像这样封闭。所以,如果您迄今为止编写了任何代码,我强烈建议将其添加到您的问题中。 – 2014-10-17 14:24:22
很难看到你要在这里做什么,但是你可以使用'file_get_contents()'而不是'include',并且随时将每个读取的文件的内容写入单个文件。你需要更确切地说一定要说。 – 2014-10-17 14:24:32