gpt4 book ai didi

php - 通过许多 url 在源代码中查找字符串的代码

转载 作者:可可西里 更新时间:2023-11-01 01:08:54 26 4
gpt4 key购买 nike

我想输入一个很长的 url 列表并在源代码中搜索特定的字符串,输出包含该字符串的 url 列表。听起来很简单吧?我想出了下面的代码,输入是一个 html 表单。您可以在 pelican-cement.com/findfrog 上试用。

它似乎有一半时间有效,但被多个 url/不同顺序的 url 抛出。搜索“adsense”时,它正确地将 politics1.com 标识为

cnn.com
politics1.com

但是,如果反转,则输出为空白。我如何才能获得可靠、一致的结果?最好是我可以输入数千个 url 的东西?

<html>
<body>

<?
set_time_limit (0);

$urls=explode("\n", $_POST['url']);

$allurls=count($urls);

for ( $counter = 0; $counter <= $allurls; $counter++) {

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$urls[$counter]);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_exec ($ch);
$curl_scraped_page=curl_exec($ch);

$haystack=strtolower($curl_scraped_page);
$needle=$_POST['proxy'];
if (strlen(strstr($haystack,$needle))>0) {

echo $urls[$counter];
echo "<br/>";
curl_close($ch);
}
}




//$FileNameSQL = "/googleresearch" . abs(rand(0,1000000000000000)) . ".csv";
//$query = "SELECT * FROM happyturtle INTO OUTFILE '$FileNameSQL' FIELDS TERMINATED BY ','";
//$result = mysql_query($query) or die(mysql_error());

//exit;

echo '$FileNameSQL';





?>

</body>
</html>

最佳答案

稍微重新组织了您的代码。罪魁祸首是空格。您需要在使用之前修剪您的 URL 字符串(即 trim($url);)。

其他变化:

  • 将您的搜索词设置在 for 循环之外,因为它永远不会改变。
  • 在循环外设置 curl 对象,每次只需更改 URL 即可重用它。
  • 使用 curl_setopt_array() 在一条语句中设置多个 curl 选项。
  • 使用 foreach 循环,因为无论如何您都要遍历整个数组并且代码更简洁。
  • 使用 stripos() 比 strstr() 更有效,而且不区分大小写。
  • 使用 !== 比较器来防止隐式类型转换(FALSE !== 0,但 FALSE == 0)。
  • 检查返回的 $html 字符串,因为 curl_exec() 如果失败则返回 FALSE。
  • 在最后关闭 curl 对象(即也在 if 语句之外)。

下面的代码可以在 my quick mockup 上运行.

<html>
<body>

<form action="search.php" method="post">
URLs: <br/>
<textarea rows="20" cols="50" input type="text" name="url" /></textarea><br/>

Search Term: <br/>
<textarea rows="20" cols="50" input type="text" name="proxy" /></textarea><br/>

<input type="submit" />
</form>

<?
if(isset($_POST['url'])) {
set_time_limit (0);

$urls = explode("\n", $_POST['url']);
$term = $_POST['proxy'];
$options = array( CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HEADER => 1,
);
$ch = curl_init();
curl_setopt_array($ch, $options);

foreach ($urls as $url) {
curl_setopt($ch, CURLOPT_URL, trim($url));
$html = curl_exec($ch);

if ($html !== FALSE && stristr($html, $term) !== FALSE) { // Found!
echo $url;
}
}

curl_close($ch);
}
?>

</body>
</html>

关于php - 通过许多 url 在源代码中查找字符串的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5642414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com