Question

The script I am using 'gets' a html page and parses is showing only the .jpg images within, but I need to make some modifications and when i do it simply fails...

This works:

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>';

However, there are some problems... I only want to show images over a certain size, plus some site do not display full URL in the img tag and so need to try to get around that too... so I have done the following:

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>';

This works, but only returns the first image.

On the example link below there are 5 images, which the first code shows but does not display them as the src is without the leading domain

Example link as mentioned above

Is there a better way to do this? And why does the loop fail?

Was it helpful?

Solution

You seem to be missing a {:

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

OTHER TIPS

You forgot your brackets:

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>';
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top