奇怪的PHP换行问题-尝试使用换行将字符串转换为数组,大多数情况下都有效,但在特定的服务器上无效


Odd PHP newline issue - trying to convert string to array using new line, works most of the time but not on one particular server

我有一个完美的工作函数

    function response( $array ) {
        $response = array();
        $results  = preg_split( '/$'R?^/m', $array );
        foreach( $results as $result ){ 
            $value = explode( '=', $result, 2 );
            $response[trim($value[0])] = trim($value[1]);
        }
        return $response;
    }

但是,在一个特定的网站上,使用PHP 5.3.3,它无法正常工作。

在我尝试过的其他所有网站上,我都有

    Array
    (
[VPSProtocol] => 3.00
[Status] => 3DAUTH
[StatusDetail] => 2007 : Please redirect your customer to the ACSURL, passing the MD and PaReq.
[3DSecureStatus] => OK
[MD] => 201458812600945291
[ACSURL] => https://test.sagepay.com/mpitools/accesscontroler?action=pareq
[PAReq] => eJxVUttygjAQfe9XMHwAuXApOGscqw91Ora2tg/1jYYdwQpogHr5+iYI1eZpz0n27O7ZwOiYb60fVFVWFkObOdQeiTt4TxXidImyUShgjlUVr9HKkqHNKfP8MGQ8oDTyfB4xW8Bi/IZ7AZ2M0CoOA9JDna9kGhe1gFjuH2bPwvMCN/CBdBByVLOp4IzS+/ZQc4BcaCjiHMUkVWWO1ouKizUCaTmQZVPU6iRCHgDpATRqK9K63g0IkW1W2SY5snSabyDmGsi1p0VjokrLHbNEPH1lH5Olf14dXjFa7WtFN7579jfzw+cQiHkBSVyj0D4E1OWeRaOB5w64brflIc5NH4K7UagHvADYmRrj25tbBrTNCgvZD9IjwOOuLNDkAPmLIcFKiqVZyCI+WfPFTJc2FJDrKJNHY7astX/M+NxGRi/TDrGAXQQNAGLekm6FpNu1jv79gV8cl7Rg
    )

但在5.3.3服务器上,我得到了

    Array
    (
        [VPSProtocol] => 3.00
    Status=3DAUTH
    StatusDetail=2007 : Please redirect your customer to the ACSURL, passing the MD and PaReq.
    3DSecureStatus=OK
    MD=2014590184178038623
    ACSURL=https://test.sagepay.com/mpitools/accesscontroler?action=pareq
    PAReq=eJxVUsGOgjAQve9XED+AUhAEM9agJurBDVEvHhuYlW6kYIFV/n5bhdXtad6byZuZN4X5vbhYP6hqUcrZiNrOaM4+4JgrxNUB01Yhgx3WNT+jJbLZyHXo2I8cGo7pJHS8MHC9EYMk3uOVQa/DtIxNgQxQC6g057JhwNPrYvvJxpEbOQ6QHkKBartifuRHrhs4/QPypEHyAtkxRytBri7WUfFMyLO1LIuKyw7IIw9p2cpGdSx0AyADgFZdWN401ZSQ2+1mf+uRsKuMjp2WBRCTB/IaMGlNVGu9u8iYfxKbOInpevN1akTUrFZivQgKKfa3GRBTARlvkGlXAsdzA4uGU9+behMgDx54YQZhYy8y2z4BVKZH/J55Z0CbrlCmwyYDArxXpURd4QL5iyHDOmUHc56Ed9Yu2erWhgLyWmW5Mc6njTaTGtMfkdET2iIa0KegAUBMLenvSfrL6+jfj/gF1Ym44A==
    )

感谢收到任何建议或想法-我没有访问服务器修改PHP的权限,但我有足够的权限访问PHP信息等。

编辑

我开始使用的字符串总是显示工作换行符,例如

    VPSProtocol=3.00
    Status=3DAUTH
    StatusDetail=2007 : Please redirect your customer to the ACSURL, passing the MD and PaReq.
    3DSecureStatus=OK
    MD=2014590211813198670
    ACSURL=https://test.sagepay.com/mpitools/accesscontroler?action=pareq
    PAReq=eJxVUk1vwjAMve9XVL1OIh8tHUEmiJXDemCqBodtt6y1aCf6QVpGy69fAmWwnPyerWf7OTDvip3zg7rJq3LmshF15/IBNplGXK4xOWiUsMKmUVt08nTmcsr8saCcsQnzmJgET9SVEC/ecC9h0JFGZsSAXKER0EmmylaCSvbP0av0BReUAhkgFKijpRyLseA8oMMDcqGhVAXKTYZOjErvnI1WaV5unbAqalX2QM55SKpD2epeTngA5ArgoHcya9t6SsjxeBx9m5Gwr63OKKkKIDYP5DZgfLBRY/S6PJXRR0c/N6fF4/viK/RPfFKH4bja6iWrZkBsBaSqRWlcCajHA4eJqSemvln+zIMq7CDS94Td9gKgtj0W95l7BozpGsvkuskVAXZ1VaKp4ED+YkixSeTanidWvbOKI9PaUkBuq4Qv1vmkNWYya/o5snq5sYgF7CJoARBbS4Z7kuHyJvr3I34BhBq4kA==

我使用的开发人员文档说

编码方式为"名称=值"字段,由回车换行符(CRLF)分隔。

在这种情况下,工作正常

function response( $array ) {
    $response = array();
    $results  = preg_split( '#'n(?!s)#', $array );
    foreach( $results as $result ){ 
        $value = explode( '=', $result, 2 );
        $response[trim($value[0])] = trim($value[1]);
    }
    return $response;
}