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)."¬ify=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
と
ありがとうございます@Pedro Lobito私はポストと最後にトピック番号の後にURLを得ることができます、あなたはpreg_matchについて助けてください – sammy
この場合、 'preg_match'は必要ありません、' preg_replace'を使ってトピック番号 –
私は自分の答えを更新しました。 –