检查远程URL上的页面上是否存在锚标记中的URL

时间:2011-11-25 10:46:57

标签: php

我的项目需要一个免费用户将URL放到他们网站上的项目网站上,以获得SEO和项目网站的反向链接。所以我想检查是否

<a href='http://examplesite.com'>example site</a>

存在于由注册用户给出的URL指定的页面上。 我将不得不多次使用此检查,因此需要一个资源较少的解决方案。

3 个答案:

答案 0 :(得分:0)

我认为curl 比使用其他PHP函数获取远程资源需要更多资源(如果有的话) - 它们都使用相同的基本原则。

但如果curl不可用,file_get_contents是一个可行的选择。您可以使用新的stream contexts来模仿卷曲的大部分功能,例如发送适当的user-agent标题等。

答案 1 :(得分:0)

明智的代码资源没有任何问题。

// Initializes a new session and return a cURL handle
$handle = curl_init($url);

// Sets an option on the given cURL session handle
curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);

// Execute the given cURL session
$response = curl_exec($handle);

// Gets information about the last transfer.
// CURLINFO_HTTP_CODE - Last received HTTP code 
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);

if($httpCode == 404) {
    // your code here
} else {
    // your code here
}

curl_close($handle);

答案 2 :(得分:0)

谢谢大家。这个功能做了我想要的:

function checkurl($url, $urltocheckfor){
    $input = @file_get_contents($url);
    $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
    $matches = array();
    if(preg_match_all("/$regexp/siU", $input, $matches)) {
        if(in_array($urltocheckfor))
            return true;
        else
            return false;
    }
}