2

重複の可能性:
A要素のhref属性を取得する

sessionIdこのコードからとviewstate変数を抽出するにはどうすればよいですか?

コードは次のとおりです。

$url = "http://www.atb.bergamo.it/ITA/Default.aspx?SEZ=2&PAG=38&MOD=LINTRV";

$ckfile = tempnam ("/tmp", "CURLCOOKIE");
$ch = curl_init ($url);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec ($ch);
curl_close($ch);

preg_match('~<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="(.*?)" />~',$html,$viewstate);

var_dump(file_get_contents($ckfile)); //<--- There's the sessionId variable in it
var_dump($viewstate[1]);              //<--- View State

手伝ってくれませんか。

4

1 に答える 1

4

これは、正規表現なしで非常に簡単に実行できます。

$viewstate = explode('id="__VIEWSTATE" value="', $html);
$viewstate = explode('"', $viewstate[1]);
$viewstate = $viewstate[0];

クッキーについても同じです。

$sesid = explode('SessionId', file_get_contents($ckfile));
$sesid = explode('\n', $sesid[1]);
$sesid = trim($sesid[0]);

それをすべてまとめると、

   $url = "http://www.atb.bergamo.it/ITA/Default.aspx?SEZ=2&PAG=38&MOD=LINTRV";    
   $ckfile = tempnam ("/tmp", "CURLCOOKIE");
   $ch = curl_init ($url);
   curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile); 
   curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
   curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
   $html = curl_exec ($ch);
   curl_close($ch);

    $viewstate = explode('id="__VIEWSTATE" value="', $html);
    $viewstate = explode('"', $viewstate[1]);
    $viewstate = $viewstate[0];    

    $sesid = explode('_SessionId', file_get_contents($ckfile));
    $sesid = explode("\n", $sesid[1]);    
    $sesid = trim($sesid[0]);

    echo $viewstate."<br/>";
    echo $sesid;

私のテストセットアップで動作します。

于 2012-12-01T19:41:30.853 に答える