我将在这个站点上进一步使用 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>
然后,我想从第二台服务器的 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 字符串的行,下面是 findme 值 12345678 的格式出现在响应页面的一行中。我想将 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 读取响应页面