0

我知道这超出了 PHP 的常规用途。我使用 PHP 为 Web 前端生成模板。然后,我将这些模板交付给开发团队。他们要求我们提供平面 HTML 文件。

有没有办法利用 PHP 来保存文件的 html 版本。我有 screen-02.php 到 screen-62.php。我必须在浏览器中单独打开它们并将 html 保存为 screen-02.html、screen-03.html 等。如果有帮助,我也可以使用 jQuery。

提前感谢您的帮助。

4

5 回答 5

4

我认为编写 Shell/Batch 脚本并从 CLI 执行 PHP 脚本而不是将它们用作网页是最简单的事情。

如果执行以下命令:

php /some/page.php

您可以生成所需的输出到您的标准输出,因此如果您使用流水线,您可以轻松地执行以下操作:

php /some/page.php >> /some/page.html

或者你可以像这样编写一个 bash 脚本(如果你在 Linux 上):

#!/bin/bash
for i in {1..5}
do
  php /some/screen-$i.php >> /some/screen-$i.html
done

我认为这将是最简单(也是最快)的方法,不需要其他技术。

如果您无法访问 PHP CLI,您可以执行类似的操作,但您可以使用 PHP CLIwget来下载页面,而不是使用 PHP CLI。

于 2013-03-06T14:48:43.443 回答
4

使用 php 输出缓冲?http://php.net/manual/en/function.ob-start.php

可能是这样的:

<?php

    ob_start();

    include_once("screen-01.php");

    $content = ob_get_clean();

    file_put_contents($fileName, $content);

?>

您也可以循环保存所有文件,但取决于您应该检查最大执行时间的数量

于 2013-03-06T14:49:23.913 回答
0

最简单的方法(在我看来)是使用输出缓冲来存储然后保存 PHP 输出。您可以在不访问命令行服务器工具的情况下使用它。

像这样创建一个新的 PHP 文件:

<?php

// Start output buffering
ob_start();

// Loop through each of the individual files
for ( $j = 0; $j<= 62; $j++ ){

    ob_clean(); // Flush the output buffer
    $k = str_pad( $j, 2, '0' ); // Add zeros if a single-digit number
    require_once('screen-' . $k . '.php'); // Pull in your PHP file

    if ( ob_get_length() > 0 ){ // If it put output into the buffer, process
        $content = ob_get_contents(); // Pull buffer into $content
        file_put_contents( 'screen-' $k . '.html', $content ); // Place $content into the HTML file
    }
}

?>

并从同一台服务器上的同一路径运行它。确保文件夹具有写入权限 (CHMOD),以便它可以创建新文件。您应该会发现它会使用正确的 PHP 输出生成所有 HTML 文件。

于 2013-03-06T14:48:52.910 回答
0

也许是这样的:

<?php
$file = $_GET['file'];

$html = file_get_contents('http://yoururl.com/'.$file);
file_put_contents('./savedPages/'.$file.'.htm', $html);

?>

用http://yoururl.com/savePage.php?file=yourtarget.php调用它

于 2013-03-06T14:50:03.523 回答
0

当您使用 Smarty 之类的模板引擎时,您可以创建输出并将其保存到文件中,而无需在浏览器中显示。

$smarty = new Smarty;
$smarty->assign("variable", $variable);
$output = $smarty->fetch("templatefile.tpl");

file_put_contents("/path/to/filename.html", $output);

Smarty 文档:http ://www.smarty.net/docs/en/api.fetch.tpl

另一种选择是使用PHP 输出缓冲区

于 2013-03-06T14:51:30.450 回答