我希望在多个网站上搜索单个数据。数据正在正确拉取,但它仅针对最后一个搜索案例显示。单个搜索工作正常。
例如,我进行了三次搜索,仅显示第三个结果 - 其余结果为空白。
谁能说出一些启示?
if($_POST)
{
$domains = explode("'n", $_POST[domains]);
foreach($domains as $domain)
{
$domain = explode('|', $domain);
$domain = str_replace(array('http://','/'),'',$domain[0]);
echo '<b>Providing Data for '. $domain .'.. </br></br>';
unset($urls);
unset($url);
unset($blacklinka[1]);
unset($blacklinka);
unset($AskApache_result);
unset($regex);
$domainshort = str_replace('www.','',$domain);
$domainshortdash = str_replace('.','-',$domainshort);
$urls[] = 'http://data.alexa.com/data?cli=10&dat=snbamz&url=' . $domain;
$ch = curl_init();
foreach($urls as $url)
{
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_REFERER, 'http://www.google.com/');
$AskApache_result = curl_exec ($ch);
$regex = '/LINKSIN NUM="(.+?)"/';
preg_match($regex,$AskApache_result,$blacklinka);
echo '</br>';
echo 'Indexed Backlinks: '. $blacklinka[1];
echo '</br></br>';
flush();
ob_flush();
}
}
}
我已经尝试过您的代码,它对我来说很好用。所以我有一些关于为什么它不适合你的想法。
- 由于
foreach($domains as $domain)
循环确实unset($urls)
,如果使用$urls
的循环实际上位于foreach之外,那么它将只包含最后一个循环。 - 你在
'n
上分解$domains
,然后在|
上$domain
,这可能表明你有一个奇怪的输入格式,它可能不像你打算的那样工作,所以查看循环中的$domains
和$domain
可能会让你了解你从输入中实际得到的东西。
据我所知,卷曲和preg_match工作正常。因此,要么您没有执行所有 curl 调用(由于未设置),要么您输入的域列表没有按预期进行解释。