Почему этот foreach терпит неудачу? - PullRequest
0 голосов
/ 23 января 2012

Сценарий, который я использую, 'получает' html-страницу и анализирует, показывает только изображения .jpg внутри, но мне нужно внести некоторые изменения, и когда я это делаю, это просто не получается ...

Это работает:

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

Это работает, но возвращает только первое изображение.

В приведенном ниже примере ссылки есть 5 изображений, которые первоекод показывает, но не отображает их, поскольку src не имеет ведущего домена

Пример ссылки, как упомянуто выше

Есть ли лучший способ сделать это?И почему цикл выходит из строя?

Ответы [ 2 ]

2 голосов
/ 23 января 2012

Кажется, вам не хватает {:

foreach($html->find('img[src$=jpg]') as $e) {
1 голос
/ 23 января 2012

Вы забыли свои скобки:

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