Strpos无法正常工作

时间:2016-01-13 03:25:10

标签: php strpos

目前我遇到了一系列过滤问题,因此只发布包含字符串http://www.example.com/?dl_name=的帖子。

第一个if声明完美无缺,但是第二个声明会回复我正在抓取的每个帖子,即使是那些没有包含上述网址的帖子,我做错了什么?

$url = ''.$element->href;
$html2 = file_get_html($url);
$title = $html2->find('.single-style1-title h1',0);
$s = $title->plaintext;
$str2 = explode ("MUSIC:", $s);
print '<br>';
$date = $html2->find('strong > a',0);
$n = $date->href;
$str = explode ("http://www.example.com/?dl_name=", $n);
if (strpos($title->plaintext,"VIDEO:")===FALSE) { 
    if (strpos($n,'http://www.example.com/?dl_name=') !== true) {   
        $image = $html2->find('.thumb-wrap img',0);
        //$date = $html2->find('strong > a',0);
        //$n = $date->href;
        print '<br><br>';
        echo $url;
        print '<br>';
        print htmlspecialchars_decode($image->src);
        print '<br>';
        print $str2[1];
        print '<br>';
        print $str[1];
    }
}   

2 个答案:

答案 0 :(得分:2)

问题在于:

if (strpos($n,'http://www.example.com/?dl_name=') !== true)

strpos永远不会返回true。引用from the docs

  

返回针存在于相对于haystack字符串开头的位置(与offset无关)。另请注意,字符串位置从0开始,而不是1。

     

如果未找到针,则返回FALSE。

答案 1 :(得分:0)

问题在于:

strpos($n,'http://www.example.com/?dl_name=') !== true

strpos永远不会返回true,只有FALSE(如果不存在)或第一个位置。你说你想要包含"http://www.example.com/?dl_name="的字符串吗?

尝试将其更改为strpos($n,'http://www.example.com/?dl_name=') !== FALSE,看看会发生什么。