PHP ob_flush();它没有冲动

时间:2014-07-29 23:02:22

标签: php

我试图编写一个脚本,根据10个模板创建10个文件(每个文件一个模板)。

这是我的代码:

$lines = file("files/templist.txt");
$template = "files/templates/template.txt";
$template2 = "files/templates/template2.txt";
$template3 = "files/templates/template3.txt";
$template4 = "files/templates/template4.txt";
$template5 = "files/templates/template5.txt";
$template6 = "files/templates/template6.txt";
$template7 = "files/templates/template7.txt";
$template8 = "files/templates/template8.txt";
$template9 = "files/templates/template9.txt";
$template10 = "files/templates/template10.txt";

ob_start();
include_once($template);
$file_output = ob_get_clean();
file_put_contents('files/'.$lines[0].'', $file_output);
ob_flush()

if (empty($lines[1])) {
} else {
ob_start();
include_once($template2);
$file_output2 = ob_get_clean();
file_put_contents('files/'.$lines[1].'', $file_output2);
ob_flush()
}

if (empty($lines[2])) {
} else {
ob_start();
include_once($template3);
$file_output3 = ob_get_clean();
file_put_contents('files/'.$lines[2].'', $file_output3);
ob_flush()
}

if (empty($lines[3])) {
} else {
ob_start();
include_once($template4);
$file_output4 = ob_get_clean();
file_put_contents('files/'.$lines[3].'', $file_output4);
ob_flush()
}

if (empty($lines[4])) {
} else {
ob_start();
include_once($template5);
$file_output5 = ob_get_clean();
file_put_contents('files/'.$lines[4].'', $file_output5);
ob_flush()
}

if (empty($lines[5])) {
} else {
ob_start();
include_once($template6);
$file_output6 = ob_get_clean();
file_put_contents('files/'.$lines[5].'', $file_output6);
ob_flush()
}

if (empty($lines[6])) {
} else {
ob_start();
include_once($template7);
$file_output7 = ob_get_clean();
file_put_contents('files/'.$lines[6].'', $file_output7);
ob_flush()
}

if (empty($lines[7])) {
} else {
ob_start();
include_once($template8);
$file_output8 = ob_get_clean();
file_put_contents('files/'.$lines[7].'', $file_output8);
ob_flush()
}

if (empty($lines[8])) {
} else {
ob_start();
include_once($template9);
$file_output9 = ob_get_clean();
file_put_contents('files/'.$lines[8].'', $file_output9);
ob_flush()
}

if (empty($lines[9])) {
} else {
ob_start();
include_once($template10);
$file_output10 = ob_get_clean();
file_put_contents('files/'.$lines[9].'', $file_output10);
ob_flush()
}

files / templist.txt包含10行:

data1
data2
data3
data4
data5
data6
data7
data8
data9
data10

我的目标是根据模板创建10个文件,例如data1.txt,data2.txt,data3.txt(...)和data10.txt

以上脚本创建者只有1个名为data10.txt的文件,省略了data1.txt,data2.txt等。 我做错了什么?干杯! :)

2 个答案:

答案 0 :(得分:0)

也许这(简单)?

for ($i = 1; $i <= 10; $i++) {
    ob_start();
    include('files/templates/template' . $i . '.txt');
    file_put_contents('files/data' . $i, ob_get_clean());
}

或者这个(templist.txt和第一个模板没有号码?)

$lines = explode("\n", file_get_contents("files/templist.txt"));

for ($i = 1; $i <= 10; $i++) {
    if (!empty($lines[$i])) {
        ob_start();
        $templatePath = 'files/templates/template.txt';
        if ($i > 1) {
            $templatePath .= $i;
        }
        $templatePath .= '.txt';

        include($templatePath);

        file_put_contents('files/' . $lines[$i], ob_get_clean());

    }
}

答案 1 :(得分:0)

除了由于在 ob_flush()调用结束时缺少分号而导致此代码完全混乱并且其语法不正确的事实,主要问题是文件名是你从templist.txt文件中读取包含一个新行 - &#34; \ n&#34;最后,除了data10.txt,它是该文件的最后一行。在这种情况下,文件的创建可能会失败,或者您的文件管理器可能无法显示它。

最快的解决方法是用这个替换第一行:

$lines = explode("\n", file_get_contents("files/templist.txt"));