2012-07-24 28 views
0

我正在編寫腳本以讀取交易完成後從支付網關提供的響應。 http://docs.merchee.com/api/push-notifications/index.html如何閱讀POST響應並查找具體信息

我得到的示例數據是

$received_values = " 
    status_code PAID 
    subtotal 10 
    success_redirect http://site.com/thanks 
    tax_total 0 
    total_price 10 
    transaction_amount 10 
    transaction_date 07/24/2012 
    transaction_nmb 101888 
    transaction_time 12:43:52 
    zip 12345 
"; 

我專門找線transaction_nmbstatus_code

我想我做的東西像這樣:

$received_values = (array) stripslashes_deep($_POST); 

但我堅持我應該如何去確認吧.. in_array

謝謝。

+0

您是否正在專門查看這些行存在,還是希望看到這些行有什麼價值? – Palladium 2012-07-24 18:26:28

+0

他們有什麼值;-) – Dean 2012-07-24 18:34:35

回答

0

因爲它看起來像$ received_values是一個換行符分隔的字符串,也許你可以使用這個正則表達式(未經測試)來獲取值?

preg_match_all('/status_code\s(\w+).+transaction_nmb\s(\d+)/',$received_values, $matches); 
// PAID should be in $matches[1] 
// 101888 should be in $matches[2] 
+0

嗨蒂姆,$ received_values被轉換成我有的數組。但是,由於腳本的性質,我無法仔細檢查var_dump的實際外觀。但是,將任何$ _POST轉換爲數組是相同的... – Dean 2012-07-24 18:36:42

+0

是否要確認該值是否存在?或者說關鍵是存在的?如果它是一個數組,你應該能夠做一些像$ val = $ received_values ['status_code']; – 2012-07-24 18:38:30

+0

謝謝,我會研究它。我想確認密鑰是否存在。 – Dean 2012-07-24 18:39:55

0

由換行符爆炸(爆炸是不是最有效的,但會有所幫助。

$array = explode('\n', $received_values); 

這會給你這每一行的一個數組。

$array[0] //status_code PAID 

那麼你可以只通過再次分割或使用php解析函數之一尋找答案。