Ho bisogno di una funzione che analizzerà correttamente NVP in array PHP. Ho usato il codice fornito da paypal ma non ha funzionato per quando la lunghezza della stringa è stata specificata accanto al nome.Qual è il modo migliore per analizzare Paypal NVP in PHP?
Ecco quello che ho finora.
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;
}
Questa funzione funziona la maggior parte del tempo.
Questo non è corretto in quanto parse_str su "nota [6] = aaaaa roba = 2" si tradurrà in array ('note' => array (5 => 'AAAAA '),' roba' => 2) il risultato dovrebbe essere array ('note' => 'aaaaa', 'stuff' => 2) –
No. Il risultato non dovrebbe essere 'array ('note' => 'aaaaa', 'stuff' => 2)' . per questo avresti "note = aaaaa & stuff = 2". La mia risposta non è errata. Ho costruito un'integrazione di gateway di pagamento paypal in PHP utilizzando il codice che ho inviato. Elabora migliaia di transazioni al mese bene. – Josh
La lunghezza della stringa non deve essere specificata accanto alla stringa in questo modo. Non è così che funziona PayPal NVP. Leggi il loro manuale. "La richiesta e la risposta sono codificate tramite URL" https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_NVPAPIOverview – Josh