Http的请求类型:
Content-Type: application/x-www-form-urlencoded
数据格式比如:
mc_gross=399.00&protection_eligibility=Eligible&address_status=confirmed&payer_id=XEMQ4LGLL3E8U&address_street=%BF%C6%D4%B0%C2%B72%BA%C5A8%D2%F4%C0%D6%B4%F3%CF%C3&payment_date=22%3A41%3A18+Apr+04%2C+2017+PDT&payment_status=Completed&charset=gb2312&address_zip=518000&first_name=li&mc_fee=15.86&address_country_code=CN&address_name=%C9%EE%DB%DA%CA%D0%A1%A1%CA%A5%C2%EB%BF%C6%BC%BC¬ify_version=3.8&custom=&payer_status=verified&business=yu.yu-facilitator%40zmartec.com&address_country=China&address_city=%C9%EE%DB%DA%CA%D0&quantity=1&verify_sign=AEPisTkyRVDN-DgDcwFo3PX0vGhVAHguYiojwSz3MswIw656jfrcaEIi&payer_email=zmartec%40zmartec.com&txn_id=47265043LY8373011&payment_type=instant&last_name=tao&address_state=GUANGDONG&receiver_email=yu.yu-facilitator%40zmartec.com&payment_fee=15.86&receiver_id=PEAD5Y5KWXRJU&txn_type=web_accept&item_name=SIGMA%2BSD1000&mc_currency=USD&item_number=&residence_country=US&test_ipn=1&transaction_subject=&payment_gross=399.00&ipn_track_id=d641e6445fbfc
转换为:
Array
PHP代码
/** * 表单类型数据转换成数组 * @param unknown $raw_post_array */ function form_data_to_array($raw_post_array) { $raw_post_array = explode('&', $raw_post_array); $myPost = array(); foreach ($raw_post_array as $keyval) { $keyval = explode('=', $keyval); if (count($keyval) == 2) { // 转换urlencode的+为%2B if ($keyval[0] === 'payment_date') { if (substr_count($keyval[1], '+') === 1) { $keyval[1] = str_replace('+', '%2B', $keyval[1]); } } $myPost[$keyval[0]] = urldecode($keyval[1]); } } }
PS:
// 转换urlencode的+为%2B if ($keyval[0] === 'payment_date') { if (substr_count($keyval[1], '+') === 1) { $keyval[1] = str_replace('+', '%2B', $keyval[1]); } } 这段代码请根据自己的环境而定,我这里是有时区(Wed Apr 05 2017 14:37:18 GMT+0800)的加号。