0

複数の Web サイトで 1 つのデータを検索したいと考えています。データは正しく取得されていますが、最後の検索ケースに対してのみ表示されます。1 回の検索で問題なく動作します。

たとえば、3 つの検索を実行すると、3 番目の結果のみが表示され、残りは空白です。

誰か光を当てることができますか?

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();
}

}

}
4

1 に答える 1

0

私はあなたのコードを試してみましたが、私にとってはうまくいきます。ですから、なぜそれがうまくいかないのかについて、いくつかのアイデアがあります。

  • foreach($domains as $domain)ループが実行されるため、unset($urls)使用するループ$urlsが実際に foreach の外にある場合、最後のループのみが含まれます。
  • 爆発$domainsして爆発する\nと、奇妙な入力形式を持っていることが示唆され、意図したとおりに機能し$domainない可能性があります。|$domains$domain

私が知る限り、curl と preg_match は適切に動作します。そのため、すべての curl 呼び出しを実行していないか (未設定のため)、入力したドメインのリストが期待どおりに解釈されていません。

于 2012-08-09T12:16:31.363 に答える