2

我需要在网页中找到一些 css 选择器的存在,例如,如果网页有一个带有这样 ID 的 div:<div id='header'> Smile </div>那么 php 函数应该返回trueelse false ,或者如果网页有一个带有这样的类的 div:<div class='header'> Smile </div>那么 php 函数返回值truefalse
我没有这样做的正确想法,我尝试过这样的事情:

<?php    
include("parser.php"); //using simple html dom parser
$datamain = file_get_html('http://stackoverflow.com/questions/14343073/how-to-count-an-array-content-and-assign-number-position-with-php'); //get the content
$classHeader = $datamain->find('.header', 0); //check for div which has class .header
if(!empty($classHeader)){ //now delete the div which has .header class if it is not empty
    foreach ($datamain->find('.classHeader') as $cclass){
    $datamain = str_replace($cclass,"", $datamain);
    }
}
?>

但它输出了这个错误:
Fatal error: Call to a member function find() on a non-object in C:\xampp\htdocs\kitten-girl\serp.php on line 4
那么,如何检查一个 CSS 选择器的存在,如果存在,那么用它做些什么呢?
资源:http : //simplehtmldom.sourceforge.net

4

2 回答 2

0

您的 CSS 选择器语法错误。查找带有id“header”的元素的正确语法是"#header". 查找带有class“header”的元素的正确语法是".header"(对于查找带有“header”的a div,并且只有a divclass它是"div .header")。

于 2013-05-18T17:19:16.263 回答
0

对于在外部页面上进行这样的抓取,我使用 cURL、strpos 和 substr。由于您不需要页面的实际内容而只是检查它以查看页面上是否有内容,因此您只需要 cURL 和 strpos。因此,如果您从该 URL 中提取,它可能如下所示:

<?php

function checkPage($url=''){
    if(!$url){
        return false;
    }
    $soap_do = curl_init(); 
   curl_setopt($soap_do, CURLOPT_URL, $url );   
   curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 15); 
   curl_setopt($soap_do, CURLOPT_TIMEOUT, 15); 
   curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
   $result = curl_exec($soap_do);
   $data = htmlentities($result);
   //check for <div id="header" or <div class="header" or <div id='header'> or <div class='header'>
   if(strpos($data,"&lt;div id=&quot;header&quot;"&gt;) || strpos($data,"&lt;div class=&quot;header&quot;&gt;") || 
   strpos($data,"&lt;div id=&lsquo;header&lsquo;"&gt;) || strpos($data,"&lt;div class=&lsquo;header&lsquo;&gt;")){
       return true;
   }

       return false;

}//end function

$url = "http://stackoverflow.com/questions/14343073/how-to-count-an-array-content-and-assign-number-position-with-php";

if(checkPage($url)){
    //do something on success
}else{
    //do something on failure
}
于 2013-05-16T14:08:34.537 回答