在字符串中查找值的首选方法 - PHP

时间:2014-02-07 01:20:51

标签: php paypal

我收到了来自PayPal的NPV形式的回复,所以我使用explode("&",$response)来分隔返回值,但我担心将来如果他们混合他们的字符串(比如用ACK而不是TOKEN开始) ),我的代码将返回错误的值。

我的完整代码:

list($token,$timestamp,$correlation,$ack,$version,$build) = explode("&",$response);

字符串如下所示:TOKEN=EC-3RC2692512364446&TIMESTAMP=2014-02-07T00:52:51Z&CORRELATIONID=e8467b1c30fb7&ACK=Success&VERSION=109.0&BUILD=9605603

有关更好地获取此字符串中每个“字符串”值的任何建议吗?我在想strstr甚至strpos,但我不确定。提前感谢您的任何帮助!

3 个答案:

答案 0 :(得分:1)

$results = array();
foreach (explode("&", $response) as $entry) {
    list ($key, $val) = explode('=', $entry);
    $results[strtolower($key)] = $val;
}

现在您可以访问$results['token'],例如。

您还可以使用parse_str()来解析看起来像URL查询字符串的数据。如果他们使用百分比编码对特殊字符进行编码,那么这将为您处理。

答案 1 :(得分:1)

您可以考虑使用variable variables

foreach(explode("&", $response) as $val){
$exp = explode("=", $val, 2);
${strtolower($exp[0])} = $exp[1];
}

然后您可以检查变量是否已实际创建:

var_dump($token);
var_dump($timestamp);
var_dump($correlationid);
var_dump($ack);
var_dump($version);
var_dump($build);

答案 2 :(得分:1)

您可以检查结果变量的字符串长度,以及它们是否包含特定的字符/数字等。这将允许您在将来混合字符串时收到通知,并可能还原一些不需要的操作。

使用strlen获取并验证字符串长度。

检查$ack变量是否以"ACK"使用

开头
strpos($ack, "ACK") === 0