Преобразовать строку (с форматом массива) в массив - PHP - PullRequest
3 голосов
/ 01 марта 2012

Я отправляю строку данных через CURL, используя данные из почты, а также получаю ответ в виде строки, которая находится в форме массива. Я пытаюсь преобразовать такой ответ в реальный массив. Вот код, который у меня есть:

строка ответа, которую я получаю, такова:

Testaction_id = "2401_02-29-12_22: 28: 34_0" action = "payment" результат = "успех" to_from = "до" сумма = "205,00" брутто = "205,00" net = "- 0.85" custom = "" business = "XXXX@XXXX.com" item_name = "XXXXX.XXX" item_code = "Название продукта 3", количество = "1" транзакция_тип = "авторизован payment "action_status = "pending "action_date =" 2012-02-29 22:28:34 "processing_rate =" 0.85 "discount_fee =" 0.00 " first_name = "TESTNAME" last_name = "TESTLNAME" address = "TESTADDRESS" city ​​= "TESTCITY" state_or_province = "AL" страна = "США" zip_or_postal_code = "12345" phone = "1234562002" email = "email@wemail.es" shipment = "yes" shipping_address = "TESTADDRESS" shipping_city = "TESTCITY" shipping_state_or_province = "AL" shipping_country = "США" shipping_zip_or_postal_code = "12345" processing_time = "0,2187"

И код, который я использую для получения такого ответа,

<?php

// Get variables from POST array into a string
$post_str = "action=payment&business="      .urlencode($this->input->post('business'))
    ."&vericode="                   .urlencode($this->input->post('vericode'))
    ."&item_name="                  .urlencode($this->input->post('item_name'))
    ."&item_code="                  .urlencode($this->input->post('item_code'))
    ."&quantity="                   .urlencode($this->input->post('quantity'))
    ."&amount="                     .urlencode($this->input->post('amount'))
    ."&cc_type="                    .urlencode($this->input->post('cc_type'))
    ."&cc_number="                  .urlencode($this->input->post('cc_number'))
    ."&cc_expdate="                 .urlencode($this->input->post('cc_expdate_year')).urlencode($this->input->post('cc_expdate_month'))
    ."&cc_security_code="           .urlencode($this->input->post('cc_security_code'))
    ."&shipment="                   .urlencode($this->input->post('shipment'))
    ."&first_name="                 .urlencode($this->input->post('first_name'))
    ."&last_name="                  .urlencode($this->input->post('last_name'))
    ."&address="                    .urlencode($this->input->post('address'))
    ."&city="                       .urlencode($this->input->post('city'))
    ."&state_or_province="          .urlencode($this->input->post('state_or_province'))
    ."&zip_or_postal_code="         .urlencode($this->input->post('zip_or_postal_code'))
    ."&country="                    .urlencode($this->input->post('country'))
    ."&shipping_address="           .urlencode($this->input->post('shipping_address'))
    ."&shipping_city="              .urlencode($this->input->post('shipping_city'))
    ."&shipping_state_or_province=" .urlencode($this->input->post('shipping_state_or_province'))
    ."&shipping_zip_or_postal_code=".urlencode($this->input->post('shipping_zip_or_postal_code'))
    ."&shipping_country="           .urlencode($this->input->post('shipping_country'))
    ."&phone="                      .urlencode($this->input->post('phone'))
    ."&email="                      .urlencode($this->input->post('email'))
    ."&ip_address="                 .urlencode($this->input->post('ip_address'))
    ."&website_unique_id="          .urlencode($this->input->post('website_unique_id'));

// Send URL string via CURL
$backendUrl = "https://www.veripayment.com/integration/index.php";
$this->curl->create($backendUrl);
$this->curl->post($post_str);

// get response from API
$return_str = $this->curl->execute();
?>

1 Ответ

1 голос
/ 01 марта 2012

Если в полученном ответе элементы разделены пробелом, который вы могли бы использовать

function parse($response)
{
    $result = array();
    $resparray = explode(' ', $response);
    if ($resparray)
    {
      foreach ($resparray as $resp) {
        $keyvalue = explode('=', $resp);
        $result[$keyvalue[0]] =  str_replace('"', '', $keyvalue[1]);
      }
    }
    return $result;
}

Отредактировано и исправлено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...