如何从PHP回显内容创建文件?

时间:2015-08-16 15:12:45

标签: php xml

我想执行PHP脚本并创建XML文件。 PHP脚本包含一组'echo'命令。

$name = strftime('xml_%m_%d_%Y.xml');
header('Content-Disposition: attachment;filename=' . $name);
header('Content-Type: text/xml');

echo '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL;
echo '<lager>'.PHP_EOL;
foreach ($product_array as $product) {
    echo "<product>".PHP_EOL;
    echo "<code>", $product->var_code, "</code>".PHP_EOL;
    echo "<group>", $product->var_group, "</group>".PHP_EOL;
    echo "<manu>", $product->var_manufacturer, "</manu>".PHP_EOL;
    echo "<product>".PHP_EOL;
}
echo '</lager>'.PHP_EOL;

我已经使用此脚本,浏览器开始下载文件。 而不是那样,我希望脚本创建文件并保留在服务器上。

1 个答案:

答案 0 :(得分:2)

  1. 如果您不需要将文件发送给用户(/浏览器),则不需要标头功能。这些标头仅用于告诉浏览器服务器提供的内容类型。
  2. 如果您要将文件保存在服务器中,则可以使用file_put_contentsfopen + fwrite个功能执行此操作。
  3. 这是您要查找的代码。我还修复了</product>(添加了你错过的斜线,感谢@Marten Koetsier)

    $name = strftime('xml_%m_%d_%Y.xml');
    // Open the file for writing
    $fp = fopen($name, 'w');
    fwrite($fp, '<?xml version="1.0" encoding="UTF-8"?>');
    fwrite($fp, '<lager>');
    foreach ($product_array as $product) {
        fwrite($fp, "<product>");
        fwrite($fp, "<code>{$product->var_code}</code>");
        fwrite($fp, "<group>{$product->var_group}</group>");
        fwrite($fp, "<manu>{$product->var_manufacturer}</manu>");
        fwrite($fp, "</product>");
    }
    fwrite($fp, '</lager>');
    fclose($fp);
    

    由于您将其另存为XML,因此您并不需要PHP_EOL。如果你真的想要,你可以把我放回去......