2010-09-23 93 views
-2

我試圖讓一個腳本,將加載所需的URL(由用戶輸入),並在他們的域上我的網站上發佈,如果該網頁的鏈接回到我的域名查詢。我不是很有經驗的正則表達式,這是我到目前爲止有:檢查網站的相互鏈接

$loaded = file_get_contents('http://localhost/small_script/page.php'); 
// $loaded will be equal to the users site they have submitted 
$current_site = 'site2.com'; 
// $current_site is the domain of my site, this the the URL that must be found in target site 
$matches = Array(); 
$find = preg_match_all('/<a(.*?)href=[\'"](.*?)[\'"](.*?)\b[^>]*>(.*?)<\/a>/i', $loaded, $matches); 

$c = count($matches[0]); 
$z = 0; 
while($z<$c){ 
    $full_link = $matches[0][$z]; 
    $href = $matches[2][$z]; 
    $z++; 

    $check = strpos($href,$current_site); 
    if($check === false) { 

    }else{ 
    // The link cannot have the "no follow" tag, this is to check if it does and if so, return a specific error 
    $pos = strpos($full_link,'no follow'); 

    if($pos === false) { 
    echo $href; 
    } 
     else { 
    //echo "rel=no follow FOUND"; 
    } 

    } 

} 

正如你可以看到,這是相當混亂,我完全相信在那裏的領導。我希望有人能夠給我一個小巧,快速和簡潔的腳本,能夠完成我所嘗試的。由用戶輸入

  • 檢查

    1. 裝載指定的URL,如果指定的URL鏈接回到我的網站(如果沒有,返回錯誤代碼#1)
    2. 如果鏈接是存在的,檢查「沒有後續」,如果發現返回錯誤代碼#2
    3. 如果一切正常,設置爲true的變量,這樣我就可以繼續其它功能(如顯示他們的鏈接我的網頁上)
  • +0

    (a)您不是在尋求幫助,而是要求某人爲您提供完整的解決方案。 (二)該檢查將是非常容易規避大約十幾種不同的方式(HTML註釋裏面的鏈接,一個div不可見或具有零高度,隱藏的鏈接使用ZORDER另一個頁面元素的下面,裏面等鏈接)。 – 2010-09-23 22:46:22

    回答

    0

    這是代碼:) 幫助

    <?php 
    
    $my_url = 'http://online.bulsam.net'; 
    $target_url = 'http://www.bulsam.net'; 
    $userAgent = 'Googlebot/2.1 (http://www.googlebot.com/bot.html)'; 
    
    // make the cURL request to $target_url 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); 
    curl_setopt($ch, CURLOPT_URL,$target_url); 
    curl_setopt($ch, CURLOPT_FAILONERROR, true); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    $html= curl_exec($ch); 
    if (!$html) { 
        echo "<br />cURL error number:" .curl_errno($ch); 
        echo "<br />cURL error:" . curl_error($ch); 
        exit; 
    } 
    
    // parse the html into a DOMDocument 
    $dom = new DOMDocument(); 
    @$dom->loadHTML($html); 
    
    
    // grab all the on the page 
    $xpath = new DOMXPath($dom); 
    $hrefs = $xpath->evaluate("/html/body//a"); 
    
    // find result 
    $result = is_my_link_there($hrefs, $my_url); 
    
    if ($result == 1) { 
    
        echo 'There is no link!!!'; 
    } elseif ($result == 2) { 
    
        echo 'There is, but it is NO FOLLOW !!!'; 
    } else { 
    
        // blah blah blah 
    } 
    
    // used functions 
    
    function is_my_link_there($hrefs, $my_url) { 
    
        for ($i = 0; $i < $hrefs->length; $i++) { 
    
         $href = $hrefs->item($i); 
    
         $url = $href->getAttribute('href'); 
    
         if ($my_url == $url) { 
    
          $rel = $href->getAttribute('rel'); 
    
          if ($rel == 'nofollow') { 
    
           return 2; 
          } 
    
          return 3; 
         } 
        } 
    
        return 1; 
    } 
    
    +0

    此腳本顯示致命錯誤。致命錯誤:調用未定義函數curl_init() – 2013-02-28 12:34:21