Парсится одна картинка, как спарсить все?

ZiX

Коддинг, Парсинг
Регистрация
9 Июл 2011
Сообщения
1.378
Реакции
707
PHP:
        preg_match_all('@imgb="(.*?)"@smi',$page,$img);
 
            if(!empty($img[1])) {
                $file_name = time().rand(0,100000000).".jpg";
                file_put_contents("images/$file_name",file_get_contents($img[1]));
            } else {
                $file_name = time().rand(0,100000000).".jpg";
                file_put_contents("images/$file_name",file_get_contents('noimg.jpg'));
            }
Парсится только одна картика.
Как спарсить все картинки со значением imgd?
 
  • Заблокирован
  • #2
а цикл foreach зачем? ;)
 
preg_match_all('@imgb="(.*?)"@smi',$page,$img);
foreach ($img as $value) {
if(!empty($value[0])) {
$file_name = time().rand(0,100000000).".jpg";
file_put_contents("images/$file_name",file_get_contents($
value[0]));
} else {
$file_name = time().rand(0,100000000).".jpg";
file_put_contents("images/$file_name",file_get_contents('noimg.jpg'));
}

}
 
  • Нравится
Реакции: ZiX
preg_match_all('@imgb="(.*?)"@smi',$page,$img);
foreach ($img as $value) {
if(!empty($value[0])) {
$file_name = time().rand(0,100000000).".jpg";
file_put_contents("images/$file_name",file_get_contents($value[0]));
} else {
$file_name = time().rand(0,100000000).".jpg";
file_put_contents("images/$file_name",file_get_contents('noimg.jpg'));
}
}



Нет, все равно по одной парсит. Foreach не помогает.
HTML:
<img src="http://xxx/small_images/53/32/5332_340489_FTY-5332.jpg" border="0" width="64" height="64" num="0"
class="li_img02" imgSize="280" imgb="http://xxx/5332_340489_FTY-5332.jpg" imglow="http://xxx/small_images/53/32/5332_340489_FTY-5332.jpg"/>
</li>                 
<li  class="border_r" >
<img src="http://img1.tinydeal.com/small_images/53/32/5332_340490_FTY-5332.jpg" border="0" width="64" height="64" num="1"
class="li_img02" imgSize="280" imgb="http://xxx/5332_340490_FTY-5332.jpg" imglow="http://xxx/small_images/53/32/5332_340490_FTY-5332.jpg"/>
                  </li>                 
<li  class="border_r" >
<img src="http://xxx/small_images/53/32/5332_340491_FTY-5332.jpg" border="0" width="64" height="64" num="2"
class="li_img02" imgSize="280" imgb="http://xxx/5332_340491_FTY-5332.jpg" imglow="http://xxx/small_images/53/32/5332_340491_FTY-5332.jpg"/>
</li>
 
  • Заблокирован
  • #5
PHP:
$src = '<img src="http://xxx/small_images/53/32/5332_340489_FTY-5332.jpg" border="0" width="64" height="64" num="0"
class="li_img02" imgSize="280" imgb="http://xxx/5332_340489_FTY-5332.jpg" imglow="http://xxx/small_images/53/32/5332_340489_FTY-5332.jpg"/>
</li>           
<li  class="border_r" >
<img src="http://img1.tinydeal.com/small_images/53/32/5332_340490_FTY-5332.jpg" border="0" width="64" height="64" num="1"
class="li_img02" imgSize="280" imgb="http://xxx/5332_340490_FTY-5332.jpg" imglow="http://xxx/small_images/53/32/5332_340490_FTY-5332.jpg"/>
                  </li>           
<li  class="border_r" >
<img src="http://xxx/small_images/53/32/5332_340491_FTY-5332.jpg" border="0" width="64" height="64" num="2"
class="li_img02" imgSize="280" imgb="http://xxx/5332_340491_FTY-5332.jpg" imglow="http://xxx/small_images/53/32/5332_340491_FTY-5332.jpg"/>
</li>';
preg_match_all('@imgb="(.*?)"@smi',$src,$img);
//print_r($img);
foreach($img[1] as $data){
    echo $data;//урл картинки(в данном случае http://xxx/5332_340489_FTY-5332.jpghttp://xxx/5332_340490_FTY-5332.jpghttp://xxx/5332_340491_FTY-5332.jpg, то есть он подряд показал нам урл всех трёх картинок)
}
что с ними делать дальше - решайте сами
 
  • Нравится
Реакции: ZiX
  • Заблокирован
  • #6
тут мне кажется лучше while использовать
для перебора лучше всего пользовать foreach, он собственно для этого и сделан. Зачем изобретать велосипед и быдлокодить?
 
Назад
Сверху