1

我目前正在尝试创建一个显示 python 文件输出的 .php 文件。这是我到目前为止所拥有的(半有效)。

测试.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>";

只要文字游戏的输出相对较短,这将起作用。如果没有,您将需要在 PHP 端使用涉及proc_open的更复杂的解决方案,或者确保您的 python 代码输出转义的 HTML。

于 2013-11-03T19:17:52.520 回答