2013-07-01 6 views
5

मैं file_get_contents('php://input') उपयोग कर रहा हूँ सभी पोस्ट मानकों को पुनः प्राप्त करने/एक विशेष वेब सेवा, जैसे से मान:पार्सिंग परिणाम ('php: // इनपुट')

$postText = file_get_contents('php://input'); 

जो कुछ इस तरह का परिणाम :

inReplyToId=MG1133&to=61477751386&body=test&from=61477751386&messageId=166594397&rateCode= 

मैं तो अलग-अलग कुंजी/मान जोड़े में से प्रत्येक को पाने के लिए के रूप में मैं उन्हें एक नया डेटाबेस रिकॉर्ड में खेतों में निर्धारित करने की आवश्यकता की जरूरत है। उदाहरण के लिए मैं इसके साथ समाप्त करना चाहता हूं:

$inReplyToId = MG1133 
$to = 61477751386 
$body = test 

एक बार जब मैं व्यक्तिगत मान जानता हूं तो मैं डेटाबेस में संबंधित फ़ील्ड सेट कर सकता हूं। मैं सामान्य रूप से प्रयोग करेंगे:

if(isset($_POST['inReplyToId']) && $_POST['inReplyToId'] !== '') { 
    $request->setField('_kf_GatewayMessageID', $_POST['inReplyToId']); 
} 

लेकिन वह इस मामले में काम नहीं करेगा क्योंकि यह एक application/x-www-form-urlencoded प्रपत्र जाता है कि प्रस्तुत नहीं किया जा रहा है।

+2

[ 'parse_str()'] (http://ch2.php.net/manual/en/function.parse-str.php) – str

+1

http://www.php.net/manual/ en/function.parse-str.php – CBroe

+0

'file_get_contents' और' php: // input' का उपयोग क्यों करें? 'INPUT_POST' या' serialize ($ _ POST) पर [डेटा फ़िल्टर] (http://www.php.net/manual/en/book.filter.php) का उपयोग करना बेहतर होगा 'क्या अंतर है? –

उत्तर

5

आप parse_str समारोह का उपयोग कर सकते क्वेरी स्ट्रिंग पार्स करने:

$queryString = 'inReplyToId=MG1133&to=61477751386&body=test&from=61477751386&messageId=166594397&rateCode='; 
$data = array(); 
parse_str($queryString, $data); 
var_dump($data); 

Demo

संपादित करें:

$inReplyToId = MG1133 
$to = 61477751386 
$body = test 
:

उदाहरण के लिए मैं चाहूँगा के साथ समाप्त करने के लिए

सरणी कुंजी चर के रूप में आप extract उपयोग कर सकते हैं पाने के लिए:

extract($data); 

Demo

संपादित 2: आप पहले से ही कोड संबंधित अनुक्रमित आप के साथ डेटा को मर्ज कर सकते हैं साथ $_POST चर का उपयोग करता है है, तो यह:

लेकिन इन चरों को संशोधित करना I सलाह नहीं है।

1

parse_str() फ़ंक्शन पर एक नज़र डालें, जो एक पैरामीटरयुक्त स्ट्रिंग को एक सहयोगी सरणी में शामिल करता है।

0

आप इस कोड का उपयोग कर सकते हैं! प्रयत्न!

<?php 
$postdata = file_get_contents("php://input"); 
//$postdata = '{"mail": "[email protected]", "number": 6969 }'; 

$obj = json_decode($postdata); 
echo $obj->{'mail'}; // [email protected] 

?> 
संबंधित मुद्दे