0

私はこのサイトでさらに PHP を使用しますが、それ以外の場合は、これらの結果を達成するためにさらに Python を学習することに興味があります。

URL に変換する必要がある「findme」値をユーザーが入力できるようにする検索フォームから始めます。(例として、findme = 12345678 を使用します)

<form name="search" method="post" action="search.php" target="_blank" novalidate>
<input type="text" name="findme" />
<input type="submit" name="submit" value="submit" />
</form>

次に、2 番目のサーバーから HTTP ポスト応答ページ内の文字列を取得し、URL を PHP 文字列として保存したいと考えています。

まず、フォームを別のサーバーに送信する必要があります。これが search.php での試みです。

<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://another.server.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);

$data = array(
    'surname' => 'surname',
    'name' => 'name',
    'findme' => 'findme'
);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
?>

他のサーバーは、新しいページ (つまり、 https://another.server.com/response.html ) を提供することで応答します。次に、findme 文字列を含む行を見つけたいと思います。以下は、12345678 の findme 値の形式です。応答ページの行に表示されます。ABCDE を文字列として保存したい。

<tr class="special"><td><a href="/ABCDE">12345678</a>......

うまくいけば、私は達成することができます

<?php
file_put_contents("response.html", file_get_contents("https://another.server.com/response.html"));
$content = file_get_contents('response.html');
preg_match('~^(.*'.$findme.'.'</a>'.*)$~',$content,$line);
echo $line[1];
$findme_url = substr("abcdef", -37, 5);
echo $findme_url
?>

cURL と preg_match の可能な解決策で更新されましたが、ファイルの内容は cURL から応答ページを読み取る必要があります

4

1 に答える 1

0

はい、これは curl を使用する絶好の機会です。

$request = curl_init( 'https://another.server.com' );
curl_setopt( $request, CURLOPT_POST, true ); // use POST
$response = curl_exec( $request );

// catch errors
if( $response === false ) {
    throw new Exception( curl_error($response) );
}

curl_close( $request );

// parse response... 
于 2013-10-18T01:34:24.560 に答える