2012-03-09 18 views
1
取得とPythonでそれを取得し、多次元辞書に変換/カールポストからPHP多次元配列を送信するためにどのように

PHPの配列多次元辞書

要件: Webサーバとの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() 

{ 
    'aitxitxe': 
    { 
    'aita': 
    { 
     'alabie': 'maite', 
     'semie': 'iban' 
    } 
    } 
} 

THA:出力フォーマットさhttp://localhost/index.php 用NKS:許可Django, Python: Is there a simple way to convert PHP-style bracketed POST keys to multidimensional dict?

改善は、あなたに感謝;)

+0

ここに質問はありませんが、ちょうどコードの束です。 – rjmunro

答えて