Necesito una función que analice correctamente NVP en matriz de PHP. He estado usando el código provisto por PayPal, pero no funcionó cuando se especificó la longitud de la cadena al lado del nombre.¿Cuál es la mejor manera de analizar Paypal NVP en PHP?
Esto es lo que tengo hasta ahora.
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;
}
Esta función funciona la mayor parte del tiempo.
Esto es incorrecto desde parse_str en "nota [6] = aaaaa cosas = 2" se traducirá en array ('nota' => array (5 => 'aaaaa '),' cosas' => 2) el resultado debe ser array ('note' => 'aaaaa', 'cosas' => 2) –
No. El resultado no debe ser 'array ('note' => 'aaaaa', 'cosas' => 2)' . para eso tendrías "note = aaaaa & stuff = 2". Mi respuesta no es incorrecta Construí una integración de puerta de enlace de pago de PayPal en PHP usando el código que envié. Procesa miles de transacciones al mes sin problemas. – Josh
La longitud de la cadena no se debe especificar al lado de la cadena así. No es así como funciona PayPal NVP. Lee su manual. "La solicitud y la respuesta tienen codificación URL" https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_NVPAPIOverview – Josh