2012-02-28 86 views
-5

我有我的網站上的網址輸入類型文本。通過發佈此url字段的值,我想從該特定網址獲取所有可能的圖像(如果存在),因爲這發生在更新狀態textarea的http://facebook.com。那麼在PHP中這將是什麼代碼?從php中的任何url獲取所有圖像?

謝謝。

+0

任何理由致力於這個明確的和具有挑戰性的問題嗎?我認爲沒有人能夠回答這個具有挑戰性的問題。 – raj 2012-02-28 10:06:22

+1

這篇文章被拒絕投票的原因是你沒有給出任何跡象表明你甚至試圖自己嘗試這樣做。如果您在使用某些代碼時遇到特定問題,請將其發佈,但不要期望社區能夠幫助您完成一整段代碼。爲了啓動你,你應該看看使用PHP的cUrl和正則表達式函數。此外,當你在社區(聲譽)證明你自己時,人們可能更願意提供幫助,而不是僅僅請求某人爲你提供代碼。 – MichaelH 2012-02-28 10:11:43

+0

從url獲取html並使用html/dom解析器 – scibuff 2012-02-28 10:12:38

回答

3

的Facebook具有OpenGraph協議。您在Facebook上鍊接的很多網站都不會呈現圖片。這是因爲og標籤沒有配置。爲了真正實現抓取的圖像的任何重要結果,將需要非常大量的代碼。

有,只是不意味着要使用這種方式,如間隔圖像,跟蹤圖像等衆多圖像...當你把所有的圖像標籤從一個網站,你會得到一個編號這些圖像是的大部分只是死角。

像往常一樣,有多種方法可以解決這個問題。他們都從獲取網址的來源開始。 cURL是我的首選方法來實現這一點。

從那裏,你需要解析源中的信息,找到圖片的來源。這可以通過regular expressions (regex)完成,或者我的首選方法是使用PHP中的DOMDocument類。

一個簡單的例子來如何處理從使用DOMDocument類是如下圖像標記獲取源網址:

// Load your HTML result into $response prior to here. 
// Additionally, ensure that you have the root url for the 
//  page loaded into $base_url. 
$document = new DOMDocument(); 
$document->loadHTML($response); 

$images = array(); 

// For all found img tags 
foreach($document->getElementsByTagName('img') as $img) { 
    // Extract what we want 
    $image = array(
     // Here we take the img tag, get the src attribute 
     //  we then run it through a function to ensure that it is not a 
     //  relative url. 
     // The make_absolute() function will not be covered in this snippet. 
     'src' => make_absolute($img->getAttribute('src'), $base_url), 
    ); 

    // Skip images without src 
    if(! $image['src']) 
     continue; 

    // Add to collection. Use src as key to prevent duplicates. 
    $images[$image['src']] = $image; 
}