2009-06-29 139 views
6

我有一個PHP腳本(news-generator.php),當我包含它時,它抓住一堆新聞並打印它們。現在,我爲我的網站(CGI)使用Python。當我在使用PHP,我用這樣的「新聞」頁面上:如何在Python中包含PHP腳本?

<?php 
print("<h1>News and Updates</h1>"); 
include("news-generator.php"); 
print("</body>"); 
?> 

(我上剪下來的簡單的例子。)

有沒有一種方法,我可以使Python執行腳本(news-generator.php)並返回可以跨平臺工作的輸出?這樣,我可以這樣做:

page_html = "<h1>News and Updates</h1>" 
news_script_output = php("news-generator.php") //should return a string 
print page_html + news_script_output 
+1

「爲簡單起見,我簡化了示例。」 - 你會簡化它什麼? ;) – 2009-06-29 20:46:55

+0

@musicfreak:咯咯?效率?美女? – 2009-06-29 20:59:24

+1

我曾與「簡化示例」以掩蓋其無能的人一起工作。我希望在這裏不是這樣。 – 2009-06-29 23:19:18

回答

9
import subprocess 

def php(script_path): 
    p = subprocess.Popen(['php', script_path], stdout=subprocess.PIPE) 
    result = p.communicate()[0] 
    return result 

# YOUR CODE BELOW: 
page_html = "<h1>News and Updates</h1>" 
news_script_output = php("news-generator.php") 
print page_html + news_script_output 
7

PHP是一個程序。您可以使用subprocess運行任何程序。

困難的部分是模擬PHP所期望的整個CGI環境。

0

我認爲最好的答案是讓apache分別呈現兩個頁面,然後使用javascript將該頁面加載到div中。你有輕微的ajax負載減速,但你不必擔心它。

有一個開源的小部件的東西,將在1頁中運行多種語言,但我不記得它叫什麼。

0

您可以使用urllib從服務器(localhost)獲取頁面,並在正確的php環境中執行該頁面。不漂亮,但它會工作。如果你做得很多,它可能會導致性能問題。

1

也許是脫離主題,但如果你想以一種可以訪問由php腳本創建的變量(例如,新聞項目數組)的方式來執行此操作,那麼最好的做法是執行exec PHP腳本,但返回一個JSON編碼的項目數組作爲字符串,然後JSON在Python端解碼它們,並在那裏做你的HTML代和迭代。

相關問題