0

この例ではテキストエリアを使用していますが、テキストファイルのアップロードも試しましたが、同じことが起こります...

基本的に、このコードはURL を 1 つだけ入力すれば正しい結果を返します。別の URL を入力すると、実際の結果に関係なく、前の URL は FALSE になります。なんで?

コード:

<?php

if(!$_POST){ 

?>

    <center>

    <h1>Bulk Index Checker v1.0</h1>
    <form method="post" enctype="multipart/form-data">
        <textarea id="list" name="list" rows="10" cols="50"></textarea>
        <br/>
        <input type="submit" value="Check 'em!" />
    </form>



    </center>


<?php
}

else{  



$lines = explode("\n", $_POST['list']);

foreach($lines as $site) {

    echo($site); echo("<br>");

    $url='http://www.google.com/search?q=info:'.$site;


    //sleep(3);

        $contents = file_get_contents($url);  // nije do ovoga




        if (strpos($contents,'<h3 class="r"><a href="/url?q='.$site)!=FALSE) {
            echo("YES");
            echo("<br>");
        }
        else{
        echo("NO");
        echo("<br>");
        }
}

}

?>
4

3 に答える 3

0

問題が解決しました。

最後の $site を除くすべての $site には末尾に空の文字が含まれているようです。そのため、trim() 関数を使用してそれを取り除きました。今すぐ動作します。提案してくれた皆さんに感謝します。

于 2013-06-24T14:48:04.477 に答える
0

まず、strpos が失敗したときに htmlentities($contents) を出力して、一致しない理由を手動で確認できるようにします。

もう 1 つのことは、Google が http:// などを追加するように URL を更新する可能性があることです。

また、常に同じ形式のタグを返すサイトを信頼できないため、文字列関数を使用して html を解析するのは安全ではありません。domdocumentsimplehtmlなどのライブラリを使用する必要があります

于 2013-06-24T08:59:36.710 に答える
0

もしそう$siteならwww.mysite.de

Googleで検索すると

http://www.google.com/search?q=info:www.mysite.de

答えにたどり着く

<h3 class="r"><a href="http://www.mysite.de/"

と同じではありません

<h3 class="r"><a href="/url?q='.$site)

それはに展開します

<h3 class="r"><a href="/url?q=www.mysite.de"
于 2013-06-24T08:58:14.673 に答える