2014-01-14 69 views
0

我的公司把徽章(一個鏈接非常多的圖片)隨時發給客戶放在他們的網站上。問題是,我們向許多人發放證明是否所有客戶都實際上將他們放在他們的網站上。每個徽章都有唯一的標識符。是否有通過foreach循環(我已經設置)颳去每個網站,並在每個網站上尋找唯一標識符?刮一個網站找到一個唯一的標識

這是徽章(S),我們施捨的例子:

<a style="background:none;" href="javascript:void(window.open('http://livecompliance.com/_badge/badge?d_enc=1f7482917ce3114aafcde4e1f9b6418b','_newwindow', 'toolbar=no,location=yes,status=yes,directories=yes,menubar=yes,scrolling=no,scrollbars=no,width=550,height=330,resize=no'))"><img src="http://www.livecompliance.com/_badge/LC-CE.png" style="margin-right:50px;"></a><br /><a style="color:#333;font-size:11px;font-family:verdana;" href="https://www.livecompliance.com/">www.LiveCompliance.com</a> 
+0

可能,但只有當網站允許從漫遊器/抓取工具中抓取。 –

+0

他們大多數人應該,如果他們不這樣做,它不會是一個巨大的問題。如果可能的話,我只需要一些時間來減少時間。 –

+1

你現在的代碼是什麼樣的?徽章的html是什麼樣的? –

回答

0

起初:你說的有很多。雖然「很多」在這裏並不是一個很好的處理方式,但在談論超過100個時,這實際上表明不會在for循環中進行。

你會很容易達到執行限制!更好的解決方案:在文件或數據庫中創建一個隊列,刪除已由腳本檢查過的隊列。

現在的重點:是的,這是可能的。可能最簡潔的解決方案是使用CUrl(http://de3.php.net/curl)。我不會深入到捲曲,這裏告訴你一個替代解決方案(雖然我建議,捲曲工作)

$url = 'http://site-to-check.com'; 
$fetch_html = file_get_contents($url); //better use CUrl ;) 
$regexp = '/WHATEVER_PATTERN_FITS_YOUR_NEEDS/i'; 

if (preg_match($fetch_html,$regexp)) { 
    //YES, this site has it 
} 

這是你問什麼?

+0

我投反對票使用** *正則表達式***來解析HTML。如果通過HTML瀏覽您想要採用的路線,我會建議類似[SimpleDOM](http://simplehtmldom.sourceforge.net/)... – War10ck

+0

您能否詳細說明'curl'對' file' /'file_get_contents'或SimpleHTMLDomParser? – kero

+0

@kingkero:是的,我可以。沒有反對SimpleHTMLDomParser。但談論file_get_contents許多主機不支持它(談論遠程uris)。許多人都這麼做,但從經驗中我可以看出,他們中的大多數人都支持CUrl--這是主要原因。從技術角度來看,我認爲兩者都很好。 – androidavid