PHP Regex用于Paypal Payflow响应

Kal*_*ran 2 php regex url paypal

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

Paypal回复以如下格式发送

RESULT=0&RESPMSG=Approved&SECURETOKEN[25]=Fj+1AFUWft0+I0CUFOKh5WA== &SECURETOKENID=9a9ea8208de1413abc3d60c86cb1f4c5  
Run Code Online (Sandbox Code Playgroud)

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

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

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

rra*_*ray 5

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

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

Ideone-示例

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

print_r($keys);
Run Code Online (Sandbox Code Playgroud)

输出:

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

    [SECURETOKENID] => 9a9ea8208de1413abc3d60c86cb1f4c5
)
Run Code Online (Sandbox Code Playgroud)

  • 如果有本地方法,则应使用该方法,无需正则表达式+1 (3认同)
  • @KaleshKaladharan PHP在将其发送到PayPal之前也有一个功能,[`urlencode()`](https://www.php.net/manual/zh/function.urlencode.php)。 (2认同)
  • @KaleshKaladharan我真的不知道该怎么说。如果您比PHP更了解Web标准,那么请继续进行自制程序。 (2认同)