我有一个PHP脚本(news-generator.php),当我包含它时,抓取一堆新闻并打印它们。现在,我正在使用Python作为我的网站(CGI)。当我使用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
答案 0 :(得分:10)
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
答案 1 :(得分:7)
PHP是一个程序。您可以使用subprocess运行任何程序。
困难的部分是模拟PHP期望的整个CGI环境。
答案 2 :(得分:1)
可能不是主题,但如果你想以一种可以访问vars的方式来执行此操作,例如由php脚本创建的(例如,新闻项目数组),那么你最好的做法就是执行php脚本,但是从php返回json编码的项目数组作为字符串,然后json在python端解码它们,并在那里进行html生成和迭代。
答案 3 :(得分:0)
我认为最好的答案是让apache分别渲染两个页面,然后使用javascript将该页面加载到div中。你有ajax负载的轻微减速但你不必担心它。
有一个开源小部件的东西,将在1页中运行多种语言,但我不记得它的名称。
答案 4 :(得分:0)
您可以使用urllib从服务器(localhost)获取页面,并在适合php的环境中执行它。不漂亮,但它会起作用。如果你做了很多,可能会导致性能问题。