我正在使用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
)