2012-01-23 52 views
0

我使用「獲取」一個HTML頁面,並解析該腳本顯示僅在.jpg圖像,但我需要做一些修改,當我這樣做,只是失敗...爲什麼這個foreach失敗?

這工作:

include('simple_html_dom.php'); 

function getUrlAddress() { 
    $url = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http'; 
    return $url .'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
} 

$html = file_get_html($url); 

foreach($html->find('img[src$=jpg]') as $e) 
    echo '<img src='.$e->src .'><br>'; 

但是,有一些問題......我只想顯示超過一定大小的圖像,再加上一些網站不顯示完整的URL在img標籤,所以需要嘗試解決這個問題...所以我做了以下幾點:

include('simple_html_dom.php'); 

function getUrlAddress() { 
    $url = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http'; 
    return $url .'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
} 

$html = file_get_html($url); 

foreach($html->find('img[src$=jpg]') as $e) 
    $image = $e->src; 

// check to see if src has domain 
if (preg_match("/http/", $e->src)) { 
    $image = $image; 
} else { 
    $parts = explode("/",$url); 
    $image = $parts['0']."//".$parts[1].$parts[2].$e->src; 
} 

$size = getimagesize($image); 

echo "<br /><br />size is {$size[0]}"; 
echo '<img src='.$image.'><br>'; 

這窩rks,但只返回第一個圖像。

在下面的例子中鏈接有5張,其中第一個代碼所示但隨着SRC是沒有前導域

Example link as mentioned above

有沒有更好的辦法做到這一點不顯示呢?爲什麼循環失敗?

+0

的arent你應該到'{}'的您的foreach內容裏面附上?這樣會更清晰 – ianace

+0

@ianace - doh !!!!如果你不修改,你實際上並不需要它,但在這種情況下,我是一個什麼樣的div!我的壞人,抱歉的人和感謝 - 你可以在這個該死的代碼裏面得到太多 - 就像坐在一輛寶馬7系列中,當你打開窗戶的窗戶時試圖找出加熱器! –

回答

2

你似乎缺少一個{

foreach($html->find('img[src$=jpg]') as $e) { 
1

你忘了你的括號:

foreach($html->find('img[src$=jpg]') as $e){ 

    $image = $e->src; 

    // check to see if src has domain 
    if (preg_match("/http/", $e->src)) { $image = $image; } 

    else { 
     $parts = explode("/",$url); 
     $image = $parts['0']."//".$parts[1].$parts[2].$e->src; 
    } 
    $size = getimagesize($image); 
    echo "<br /><br />size is {$size[0]}"; 
    echo '<img src='.$image.'><br>'; 
}