2011-02-20 15 views
1

私は私のPHPウェブアプリケーションの中から使いたい私のウェブサーバに素晴らしいPythonプログラムを持っています。PHP + Python - Pythonプログラムに文字列を渡し、出力を解析します。

は、ここでのpythonコマンドの例だと、あなたはターミナルでそれを見ると同じように出力は:

>>> print MBSP.parse('I ate pizza with a fork.') 

I/PRP/I-NP/O/NP-SBJ-1/O/i 
ate/VBD/I-VP/O/VP-1/A1/eat 
pizza/NN/I-NP/O/NP-OBJ-1/O/pizza 
with/IN/I-PP/B-PNP/O/P1/with 
a/DT/I-NP/I-PNP/O/P1/a 
fork/NN/I-NP/I-PNP/O/P1/fork ././O/O/O/O/. 

あなたは典型的なPOSタガーとしてこれを認識することがあります。

いずれにしても、PHPベースのWebアプリケーションを使用してこのプログラムに「私はピザをフォークで食べました」のような文字列を送信する方法が混乱しています。さらにPHPで解析されます。

PHPを使用してこのテキストをPythonプログラムに渡し、特定のタイプの単語を選択してPHPが解析する応答を取得することです。

PHPのように普通の容疑者はpopen()とproc_open()ですが、popen()は送信や情報の受信にのみ使用されます。 popen()は私がPythonプログラムから得ているこの出力(上記)にアクセスできるようにすることができますか?それとも良い方法がありますか?カールはどうですか?ここで

は、PHPの関数の点ではすべての私のオプションは次のとおりです。 http://us.php.net/manual/en/function.proc-open.php

私は、これに迷ってしまいました知恵のあなたの賢明な言葉に感謝しますので!

+0

ええ - それは私がいるの挑戦です!何が良いですか?Exec()やpopen()やproc_open()のようなもの? – Jamison

答えて

2

私はこの目的でexec()を使用します。

exec($command, $output); 
print_r($output); 
1

あなたは双方向対話したい場合は、()ファイルディスクリプタのpopenからの出力はあなたを与える読んで、またはは、proc_open)(popenの使用して、コマンドライン引数として、あなたのPythonスクリプトに入力を渡すことができますPythonスクリプトを使用して双方向に実行します。

proc_openマニュアルの例1:http://us.php.net/manual/en/function.proc-open.phpがその例です。

+0

私は、popen()がproc_open()よりも高速かつ使いやすくなっていることを読んだことは本当ですか? – Jamison

2

少し重い/魅力的なものを手に入れたいのであれば...あなたのpythonスクリプトにhttp(またはxmlrpc)フロントエンドを与え、GET/POSTでそれを呼び出します。しかし、そのすべての機械の価値があるかもしれません!

+0

xmlrpc私は確かに行く方法だと思います!これをチェックしてくださいhttp://docs.python.org/library/simplexmlrpcserver.htmlそれはPythonのWeb開発フレームワークを使用しているときにさらに簡単になります... – neolaser

+0

私は彼らがPython Webサーバーを起動したくないと思われる主なアプリはPHPである:) –

+0

ええ - これは素晴らしい解決策ですが、簡単にするために、私はむしろpopen()またはproc_open()またはexec()に焦点を当てたいと思います。私にとって3つのオプションはあまりにも重複しています - これは単純なアプリに最適ですか? – Jamison

0

あなたのPythonが標準入力として、それを必要とする場合は、コマンドラインpopening試みることができる:

echo "I ate pizza!"|my_python_progam.py 

を、ちょうど出力をお読みください。通常どおり、コマンドラインに送る前に適切な入力検証を行います。このような

0

何かがうまくいく

$command = '/usr/bin/python2.7 /home/a4337/Desktop/script.py' 
    $pid = popen('$command',r) 
     ........ 
     ........ 
     ......... 
     pclose($pid) 
関連する問題