2016-04-26 34 views
1

こんにちは、私はStackOverFlowに関する非常に共通の話題を知っています。私はすでにそれを検索するために一週間を過ごしました。Curlで投稿した後にURLを取得する方法

私はURL持っている:私は投稿後http://bayja.com/forum/index.php

このURLを:http://bayja.com/forum/index.php?topic=3454.0

私が取得したい:ここhttp://bayja.com/forum/index.php?topic=3454.0 "3454.0" のgetトピック番号のポスト後

が私のコードです:

function post($subj, $mess, $user, $password, $board, $domain) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_COOKIESESSION, 1); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt'); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt'); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Automatic SMF poster thing"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 

    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, "user=".$user."&passwrd=".$password); 
    curl_setopt($ch, CURLOPT_URL, "$domain?action=login2"); 
    curl_exec($ch); 

    curl_setopt($ch, CURLOPT_URL, "$domain?action=post;board=".$board.".0"); 
    $data = curl_exec($ch); 

    sleep(3); 

    preg_match ("<input type=\"hidden\" name=\"sc\" value=\"(.*)\">", $data, $sc); 
    preg_match ("<input type=\"hidden\" name=\"seqnum\" value=\"(.*)\">", $data, $seqnum); 


    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, "subject=".urlencode($subj)."&icon=xx&message=".urlencode($mess)."&notify=0&lock=0&goback=1&sticky=0&move=0&attachment%5B%5D=&attachmentPreview=&post=xxxxx&sc=".$sc[1]."&seqnum=4&seqnum=".$seqnum[1]); 
    curl_setopt($ch, CURLOPT_URL, "$domain?action=post2;start=0;board=".$board); 

    curl_exec($ch); 

    curl_close($ch); 
} 

トピック番号を取得するには、投稿後にURLを取得してください。 ありがとうございます。トピックすなわち一致させるために、最後のURLとregexを取得するCURLINFO_EFFECTIVE_URL

答えて

1

使用curl_getinfo

... 
curl_exec($ch); 
$lastUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 
$topic = preg_replace('/.*topic=(.*?)$/m', '$1', $lastUrl); 
echo $topic; 
//3454.0 
curl_close($ch); 

はUPDATE:

は、あなたがするpreg_match

について私を助けることができます
preg_match_all('/.*topic=(.*?)$/m', $lastUrl, $topic, PREG_PATTERN_ORDER); 
$topic = $topic[1][0]; 
+0

ありがとうございます@Pedro Lobito私はポストと最後にトピック番号の後にURLを得ることができます、あなたはpreg_matchについて助けてください – sammy

+0

この場合、 'preg_match'は必要ありません、' preg_replace'を使ってトピック番号 –

+0

私は自分の答えを更新しました。 –

関連する問題