如何在PHP中解析一个简单的url响应?

时间:2014-10-29 03:54:57

标签: php arrays url

我试图从服务器解析一个简单的响应并使用它的值。

我能够获得如下所需的信息:

实际回复:

AccountID=0&Authenticated=1&ResponseCode=0&ResponseText=Success

我需要的是:

的单独值
  • AccountID
  • 经过身份验证
  • ResponseCode
  • responseText的

到目前为止我的代码:

$tempValue = explode("\n", $response);

foreach($tempValue as $row => $data)          
{    
    //get row data
    $row_data = explode('&', $data);

    $row_internal = explode('=', $row_data);

    $info2[$row]['id']           = $row_internal[0];
    $info2[$row]['name']         = $row_internal[1];
    $info2[$row]['description']  = $row_internal[2];



    $info[$row]['id']           = $row_data[0];
    $info[$row]['name']         = $row_data[1];
    $info[$row]['description']  = $row_data[2];


    echo 'Account ID: ' . $info[$row]['id'] . '<br />';
    echo 'Authenticated: ' . $info[$row]['name'] . '<br />';
    echo 'Response Code: ' . $info[$row]['description'] . '<br />';
    echo '<br></br>';

    echo 'Account ID: ' . $info2[$row]['id'] . '<br />';
    echo 'Authenticated: ' . $info2[$row]['name'] . '<br />';
    echo 'Response Code: ' . $info2[$row]['description'] . '<br />';
}

以上代码的结果:

Account ID: AccountID=0
Authenticated: Authenticated=1
Response Code: ResponseCode=0


Account ID: 
Authenticated: 
Response Code: 

我需要的只是字段的值,如:

Account ID: 0
Authenticated: 1
Response Code: 0

1 个答案:

答案 0 :(得分:8)

如果这是一个查询字符串响应,则无需爆炸,有一个更好的工具可以很好地处理这个问题。

只需使用parse_str()

简单的一行响应示例:

$response = 'AccountID=0&Authenticated=1&ResponseCode=0&ResponseText=Success';
parse_str($response, $data);

echo '<pre>';
print_r($data);

或者,如果响应看起来像这样的多行字符串,您可以将其应用为:

$response = "AccountID=1&Authenticated=1&ResponseCode=0&ResponseText=Success
AccountID=2&Authenticated=1&ResponseCode=0&ResponseText=Success
AccountID=3&Authenticated=1&ResponseCode=0&ResponseText=Success
";

$responses = explode("\n", $response);
foreach ($responses as $key => $value) {

    parse_str($value, $data);

    if(!empty($data)) {
        echo 'Account ID: '.$data['AccountID'] .'<br/>';
        echo 'Authenticated: '.$data['Authenticated'] .'<br/>';
        echo 'Response Code: '.$data['ResponseCode'] .'<br/>';
        echo 'Response Text: '.$data['ResponseText'] .'<br/>';
        echo '<br/>';
    }
}