2

サンスクリット自然言語プログラミングのコードを書いています。以前はマシンがテスト モードだったので、GET メソッドを介して変数を送信することで、HTML フロントエンドから PHP コードまでをテストおよび編集していました。

これで、コードは多かれ少なかれ安定しました。

私が今欲しいのは、出力をブラウザー画面にエコーするのではなく、事前定義された txt / HTML ファイルに書き込むことです。

私の典型的なコード行は次のようになります。

if ( $a === 1 ) // if a condition is satisfied.
{ 
    //Do something here
    echo "<p class = sa >X rule has applied. </p>\n";
}

エコー関数を操作して次のように使用できる方法はありますか - fputs($outfile, $b); $b は、エコーされる文字列です。この場合:

fputs($outfile,"<p class = sa >X rule has applied. </p>\n");

コードはまだ少し開発段階にあります。したがって、このエコーをfputsに正規表現で置き換えるのは良い方法だとは思いません。それ以外の場合は、1 つの変更に対して、両方のバージョンのコード (fputs と echo one) で変更を加える必要があります。

これは何だと思いましたか - Python では、Python 関数を再定義できます。たとえば、組み込み関数であっても、カスタム関数 max(a,b) を定義できます。PHP で「fputs」を機能させるために「echo」を作成する方法がわかりません。PHP の用語では、これをコマンドラインで実行したいと考えています。例えば

if (isset($argv[0])){
 // Some function to replace echo with fputs for the whole program
}

これへのポインタは大歓迎です。

4

1 に答える 1

4

バッファリングされたデータの変換に使用できるコールバック関数を指定できるため、これには出力バッファリングを使用できます。ブラウザに空の文字列を返しながら、バッファリングされた出力をキャッチしてファイルに書き込むコールバック関数を定義します。

$outfile = fopen('log.txt', 'wb');
ob_start(function($x) use($outfile) {
    fwrite($outfile, $x);
    return '';
});

スクリプト中にオフにして、ブラウザに出力を再度送信できるようにする場合は、単純に を呼び出しますob_end_flush();

于 2014-12-30T16:29:42.817 に答える