我正在使用Paypal Payflow进行付款,现在我在提取Paypal响应时遇到问题。

Paypal回复以如下格式发送

RESULT=0&RESPMSG=Approved&SECURETOKEN[25]=Fj+1AFUWft0+I0CUFOKh5WA== &SECURETOKENID=9a9ea8208de1413abc3d60c86cb1f4c5


方括号[]中的值是实际值的长度。例如,SECURETOKEN是一个参数,其值为'Fj + 1AFUWft0 + I0CUFOKh5WA =='。长度为25个字符。

如何从PHP的结果中提取每个参数及其对应的值。我对regex不太满意,无法在线找到任何解决方案。

在这种情况下,用&=分割不起作用。

最佳答案

该字符串看起来像一个URL,因此简单的方法是使用[parse_str()][1]它将把给定的字符串转换成一个“格式正确”的数组。

重要的是,函数的返回值将存储在第二个参数中(在此示例中为$keys)。

Ideone - example

$str = 'RESULT=0&RESPMSG=Approved&SECURETOKEN[25]=Fj+1AFUWft0+I0CUFOKh5WA== &SECURETOKENID=9a9ea8208de1413abc3d60c86cb1f4c5';
parse_str($str, $keys);

print_r($keys);


输出:

Array
(
    [RESULT] => 0
    [RESPMSG] => Approved
    [SECURETOKEN] => Array
        (
            [25] => Fj 1AFUWft0 I0CUFOKh5WA==
        )

    [SECURETOKENID] => 9a9ea8208de1413abc3d60c86cb1f4c5
)

09-25 16:12