2013-11-03 36 views
0

我目前正在嘗試創建一個顯示python文件輸出的.php文件。這是我到目前爲止(即半工程)。從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貓狗' 我從運行時,它的輸出命令行:

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

我的問題是,我怎麼得到test.php打印出它打印在命令行上的相同的東西? wordgame.py不會「返回」任何東西,只是在找到單詞之間的路徑後纔打印行。任何和所有的幫助表示讚賞!

回答

1

而不是exec,看看passthru。這個函數沒有返回值,但會將你的python腳本的整個輸出直接發送到瀏覽器。

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

因爲你在原來的職位有<br/>,您可能需要逃避蟒蛇輸出,敷在<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。

+0

感謝您使用此資源。我已經用passthru取代了exec,它起作用了!我很快就會接受這個答案。 – Micah