用于 Paypal Payflow 响应的 PHP 正则表达式

我正在使用 Paypal Payflow 进行付款,现在我无法提取 Paypal 响应。

Paypal 响应以下面给出的格式发送

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

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

如何从 PHP 的结果中提取每个参数及其对应的值。我对正则表达式不太好,我无法在网上找到任何解决方案。

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


皈依舞
浏览 150回答 2
2回答

慕哥9229398

该字符串看起来像一个 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);输出:Array(    [RESULT] => 0    [RESPMSG] => Approved    [SECURETOKEN] => Array        (            [25] => Fj 1AFUWft0 I0CUFOKh5WA==         )    [SECURETOKENID] => 9a9ea8208de1413abc3d60c86cb1f4c5)

喵喔喔

使用此答案将响应解析为数组是正确的开始。这是从数组中访问这些值的方法:$str = 'RESULT=0&RESPMSG=Approved&SECURETOKEN[25]=Fj+1AFUWft0+I0CUFOKh5WA== &SECURETOKENID=9a9ea8208de1413abc3d60c86cb1f4c5';parse_str( $str, $values );现在,要获得您想要的值:$tokens = $values['SECURETOKEN'];// results in an array: ['25' => 'Fj+1AFUWft0+I0CUFOKh5WA=='];$token = reset( $tokens ); // results in 'Fj+1AFUWft0+I0CUFOKh5WA=='$length = key( $tokens ); // results in '25'
打开App,查看更多内容
随时随地看视频慕课网APP