PHP Paypal gebelikte bulantı ve kusmanın ayrıştırmak için en iyi yolu nedir?

1 Cevap php

Ben doğru PHP diziye gebelikte bulantı ve kusmanın ayrıştırmak bir işlev gerekir. Ben paypal tarafından verilen kodu kullanarak edilmiştir ama dize uzunluğu yanında adının belirtilen zaman için işe yaramadı.

İşte ben bugüne kadar ne olduğunu.

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;
}

Bu fonksiyon, çoğu zaman çalışır.

1 Cevap

En iyi yolu, parse_str fonksiyonudur. Bu bir PHP diziye bir urlencoded dizeyi ayrıştırmak olacaktır.

Yani kod gibi görünecektir:

private function parseNVP($nvpstr)
{
  $paypalResponse = array();
  parse_str($nvpstr,$paypalResponse);
  return $paypalResponse;
}