1

Cloudstack REST API を呼び出そうとするコードがあります。

function file_get_header($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 1);

        $datas = curl_exec($ch);
        curl_close($ch);
        return $datas;
} 

        $url = "http://10.151.32.51:8080/client/api?" . $command . "&" . $signature . "&" . $response;

        echo $test = file_get_header($url);

出力は次のようになります。

HTTP/1.1 200 OK サーバー: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=74A5104C625549EB4F1E8690C9FC8FC1; Path=/client Content-Type: text/javascript;charset=UTF-8 Content-Length: 323 Date: Sun, 01 Jun 2014 20:08:36 GMT

私がやろうとしているのは、JSESSIONID=74A5104C625549EB4F1E8690C9FC8FC1 のみを出力して変数に割り当てる方法ですか? ありがとう、

4

2 に答える 2

2

これは、すべてのヘッダーを素敵な連想配列に解析するメソッドです。そのため、リクエストすることで任意のヘッダー値を取得できます。$dictionary['header-name']

$url = 'http://www.google.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$datas = curl_exec($ch);

$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($datas, 0, $header_size);
curl_close($ch);

echo ($header);
$arr = explode("\r\n", $header);
$dictionary = array();
foreach ($arr as $a) {
    echo "$a\n\n";
    $key_value = explode(":", $a, 2);
    if (count($key_value) == 2) {
        list($key, $value) = $key_value;
        $dictionary[$key] = $value;
    }
}

//uncomment the following line to see $dictionary is an associative-array of Header keys to Header values
//var_dump($dictionary);
于 2014-06-01T20:32:23.150 に答える
0

シンプルで、必要な文字列の部分を一致させるだけですpreg_match:

<?php

    $text = "HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=74A5104C625549EB4F1E8690C9FC8FC1; Path=/client    Content-Type: text/javascript;charset=UTF-8 Content-Length: 323 Date: Sun, 01 Jun 2014 20:08:36 GMT";

    preg_match("/JSESSIONID=\\w{32}/u", $text, $match);

    echo $result = implode($match);

?>
于 2014-06-01T20:43:12.233 に答える