我需要一个可以正确解析NVP为PHP数组的函数。我一直在使用PayPal提供的代码,但当字符串长度紧挨着名称时,它无法正常工作。
以下是我目前拥有的内容。
private function parseNVP($nvpstr)
{
$intial=0;
$nvpArray = array();
while(strlen($nvpstr))
{
//postion of Key
$keypos= strpos($nvpstr,'=');
//position of value
$valuepos = strpos($nvpstr,'&') ? strpos($nvpstr,'&'): strlen($nvpstr);
/*getting the Key and Value values and storing in a Associative Array*/
$keyval=substr($nvpstr,$intial,$keypos);
$vallength=$valuepos-$keypos-1;
// check if the length is explicitly specified
if($braketpos = strpos($keyval,'['))
{
// override value length
$vallength = substr($keyval,$braketpos+1,strlen($keyval)-$braketpos-2);
// get rid of brackets from key name
$keyval = substr($keyval,0,$braketpos);
}
$valval=substr($nvpstr,$keypos+1,$vallength);
//decoding the respose
if (isValidXMLString("<".urldecode($keyval).">".urldecode( $valval)."</".urldecode($keyval).">"))
$nvpArray[urldecode($keyval)] =urldecode( $valval);
$nvpstr=substr($nvpstr,$keypos+$vallength+2,strlen($nvpstr));
}
return $nvpArray;
}
这个函数大多数情况下都能正常工作。
array('note'=>'aaaaa ', 'stuff'=>2)
,而应该是"note=aaaaa&stuff=2"。我的回答并没有错误。我使用我发送的代码在PHP中构建了一个PayPal支付网关集成。它每个月可以处理数千个交易,运行良好。 - Joshmax_input_vars
配置选项(手册)的限制,默认值为1000。解析大型TransactionSearch结果很可能会失败。 - tillz