1

現在、python ファイルの出力を表示する .php ファイルを作成しようとしています。これが私がこれまでに持っているものです(セミワークス)。

test.php

<?php

    echo "Results from wordgame.py...";
    echo "</br>";
    $output = exec('python wordgame.py cat dog');
    echo $output;

;?>

これがtest.phpが返すものです...

Results from test.py...
dog

コマンドラインから実行したときに得られる「wordgame.py cat dog」の出力は次のとおりです。

Generated: 2454
Expanded: 83
Revisited: 0
Path:
        dog
        cog
        cag
        cat

私の質問は、test.php がコマンド ラインで出力するものと同じものを出力するにはどうすればよいかということです。wordgame.py は何も「返しません」。単語間のパスが見つかると、行を出力するだけです。どんな助けでも大歓迎です!

4

1 に答える 1

3

execの代わりに、passthruを見てください。この関数には戻り値はありませんがecho、Python スクリプトの出力全体がブラウザーに直接出力されます。

echo "Results from wordgame.py...<br/>";
passthru('python wordgame.py cat dog');

元の投稿に含まれている<br/>ため、Python 出力をエスケープして<pre/>タグでラップし、ブラウザー用に適切にフォーマットされた出力を取得する必要がある場合があります。これを行う最も簡単な方法は、php 出力バッファリングを使用することです。

echo "Results from wordgame.py...<br/>";
ob_start();
passthru('python wordgame.py cat dog');
echo "<pre>" . htmlspecialchars(ob_get_clean()) . "</pre>";

wordgameの出力が比較的短い限り、これは機能します。そうでない場合は、PHP 側でproc_openを含むより複雑なソリューションを使用するか、Python コードがエスケープされた HTML を出力していることを確認する必要があります。

于 2013-11-03T19:17:52.520 に答える