PHP - 在LOOP中检查字符串是否包含一些子字符串FAILS?

时间:2013-06-24 08:47:20

标签: php string loops file-get-contents strpos

我在这个例子中使用的是textarea,但我也试过上传文本文件,同样的事情发生......

基本上,只要您输入仅1个网址,此代码就会返回正确的结果。只要您输入另一个网址,前一个网址就会为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>");
        }
}

}

?>

3 个答案:

答案 0 :(得分:0)

如果$sitewww.mysite.de

如果我在谷歌搜索

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"

答案 1 :(得分:0)

好吧,首先要做的是在strpos失败时打印出htmlentities($ contents),这样你就可以手动检查它为什么不匹配。

另一件事是谷歌可能会像添加http:// etc。

一样更新网址

使用字符串函数解析html也不安全,因为你无法信任站点,同样以同样的方式返回标签​​格式。你应该使用像domdocumentsimplehtml

这样的库

答案 2 :(得分:0)

问题解决了。

似乎除了最后一个之外的每个$ site都在末尾包含一个空字符,所以我使用了trim()函数来摆脱它。立即行动,感谢大家的建议。