私が使用しているスクリプトは、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>';
ただし、いくつかの問題があります...特定のサイズを超える画像のみを表示したいだけでなく、一部のサイトではimgタグに完全なURLが表示されないため、それも回避する必要があります...だから私はやった続く:
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 には先頭のドメインがないため表示されません。
これを行うより良い方法はありますか?そして、ループが失敗するのはなぜですか?