Paypal PDT响应返回空格而不是换行符


Paypal PDT response returns with spaces instead of linebreaks

我可能有一个奇怪的问题:

我使用的是网络上随处可见的标准Paypal PDT请求代码

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, env('PAYPAL_HOST_URL'));
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
        // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
        // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        // curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: $pp_hostname"));
        $res = curl_exec($ch);
        curl_close($ch);
        if(!$res){
            //HTTP ERROR
        } else {
             // parse the data
            $lines = explode("'n", $res);
            $keyarray = array();
            if (strcmp ($lines[0], "SUCCESS") == 0) {
                for ($i=1; $i<count($lines);$i++) {
                    list($key,$val) = explode("=", $lines[$i]);
                    $keyarray[urldecode($key)] = urldecode($val);
                }

一切正常,除了解析

响应似乎返回一个带空格的字符串,而不是换行符"'n"

SUCCESS mc_gross=23.50 protection_eligibility=Eligible address_status=confirmed payer_id=S9H3YCCR9VKX2 tax=3.50 address_street=1+Maire-Victorin payment_date=17%3A07%3A00+Aug+14%2C+2015+PDT payment_status=Completed charset=windows-1252 address_zip=M5A+1E1 first_name=John mc_fee=0.98 address_country_code=CA address_name=John+Snow custom=2%2Csingle payer_status=verified business=John+Snow%40gmail.com address_country=Canada address_city=Toronto quantity=1 payer_email=John+Snow%40hotmail.com txn_id=7KE02601B8442143K payment_type=instant last_name=Dubey address_state=Ontario receiver_email=John+Snow%40gmail.com payment_fee= receiver_id=H3JF3H2DJ7EKG txn_type=web_accept item_name=Est+soluta+consequatur+qui+et+sint+quisquam. mc_currency=CAD item_number= residence_country=CA handling_amount=0.00 transaction_subject=2%2Csingle payment_gross= shipping=0.00

我试图将解析逻辑更改为:

$lines = explode(" ", $res);

在这种情况下我得到一个空数组:(

Array()

我有同样的问题,但爆炸'n 'r或在任何顺序都没有在我的情况下工作。所以我让PHP用nl2br自动为我做。然后我在br上爆炸了。

    $response=nl2br($response);
    $response=explode('<br />',$response);