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

Web ページとして使用する代わりに、シェル/バッチ スクリプトを作成し、CLI から PHP スクリプトを実行するのが最も簡単な方法だと思います。

次のコマンドを実行すると:

php /some/page.php

stdout に必要な出力を生成できるため、パイプラインを使用すると、次のようなことを簡単に実行できます。

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 CLI を使用する代わりにwget、ページをダウンロードするために使用できます。

于 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

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 outputbufferを使用することです。

于 2013-03-06T14:51:30.450 に答える
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 に答える