1
如何從捲曲郵寄PHP多維數組/獲取和使用Python得到它並轉換爲多維字典:PHP數組多維Python的多維字典
要求: 網絡服務器php和cgi的支持
的Debian GNU/Linux的安裝目錄:
su
aptitude install python-pip php5-curl
pip install querystring-parser
exit
curl.class.php
<?php
class curl
{
public static function getURL($url, $params = array(), $type = 'get', $curl_opts = array())
{
if(!function_exists('curl_init'))
die('curl module missing');
$type = trim(strtolower($type));
if(is_array($params) && count($params)>0)
$params = self::setParams($params);
$ch = curl_init();
if($type=='post')
{
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_URL, $url);
}
else
curl_setopt($ch, CURLOPT_URL, $url.$params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// set curl param options
if(is_array($curl_opts))
{
if(count($curl_opts)>0)
{
foreach($curl_opts as $key => $value)
curl_setopt($ch, $key, $value);
}
}
$result = curl_exec($ch);
return $result;
}
public static function setParams($array, $type = 'get')
{
$txt = '';
if(count($array)>0)
{
if($type=='get')
$txt.= '?';
$txt.= http_build_query($array);
}
return $txt;
}
}
?>
的index.php
<?php
include('curl.class.php');
$vars = array
(
'aitxitxe' => array
(
'aita' => array
(
'semie' => 'iban',
'alabie' => 'maite'
)
)
);
//echo curl::getURL('http://localhost:81/python/request.py', $vars, 'post');
echo curl::getURL('http://localhost:81/python/request.py', $vars, 'get');
?>
request.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys, cgi
from querystring_parser import parser
# request to dict
form = cgi.FieldStorage()
params = {}
for k in form.keys():
params[k] = form[k].value
# dict to query-string
def dict2querystring(dict):
text = ''
count = 0
for i in dict:
if count > 0:
text+= "&"
text+= str(i) + "=" + str(dict[i])
count += 1
return text
# request to query-string
params_text = dict2querystring(params)
# query-string to multi-dimensional dict
post_dict = parser.parse(params_text)
print "Content-type: text/plain\n"
print post_dict
sys.exit()
在瀏覽器:http://localhost/index.php 格式化輸出:
{
'aitxitxe':
{
'aita':
{
'alabie': 'maite',
'semie': 'iban'
}
}
}
改進,謝謝;)
這裏似乎沒有問題,只是一堆代碼。 – rjmunro 2012-03-09 11:57:45