İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

preg_match ile resimleri kendi sunucumuza çekme

iyimi

0
İyinet Üyesi
Katılım
14 Temmuz 2004
Mesajlar
440
Reaction score
0
Konum
Mersin
Herhangi bir sunucudaki dosyaları aşağıdaki kodla siteme alabiliyorum;

PHP:
$hedef = "/var/www/vhosts/kendisitem.com/httpdocs/resimler/a-test.jpg";
$kaynakresim = "http://www.deneme.com/resim.jpg";

$image = file_get_contents($kaynakresim) or ('Resim eklenemedi');
$fp  = fopen($hedef, 'w+') or die('Could not create the file');
fputs($fp, $image) or die('Could not write to the file');
fclose($fp);
unset($image);

benim istediğim file_get_contents ve preg_match veya preg_match_all kullanarak sayfanın kaynağında ne kadar <img src=" ile başlayan resim url si varsa hepsini kendi sunucuma çekmek. Kaç adet resim olduğu değişken bazılarında 2 bazılarında 4 resim var, bazılarında da hiç resim yok. foreach ile dizi değişkene aktarılarak yapılabileceğini düşünmekle birlikte nasıl yapılacağını bulamadım. Yardımlarınızı bekliyorum.
 

dizinci

0
İyinet Üyesi
Katılım
26 Şubat 2008
Mesajlar
20
Reaction score
0
function get_images($file){
$h1count = preg_match_all('/(<img)\s (src="([a-zA-Z0-9\.;:\/\?&=_|\r|\n]{1,})")/isxmU',$file,$patterns);
$res = array();
array_push($res,$patterns[3]);
array_push($res,count($patterns[3]));
return $res;
}
$klasor = "http://www.site.com/"; // Eger resim cektiginiz sitenin kaynak kodunda resimler http ile linklenmemis ise resimlerin oldugu klasörü http://www.site.com/klasor/ seklinde buraya belirtmeniz lazim.
$url = "http://www.site.com/sayfa.html"; // resim cekilecek adres
$file = file_get_contents($url);
$images = get_images($file);
if(!empty($images[0])){
foreach($images[0] as $key => $kaynakresim){
$kaynakresim = $klasor.($kaynakresim);
$image = file_get_contents($kaynakresim) or ($kaynakresim.'Resim eklenemedi');
$fp = fopen($hedef, 'w+') or die('Could not create the file');
fputs($fp, $image) or die('Could not write to the file');
fclose($fp);
unset($image);
}
}else{
echo "<br/>No images found";
}

Umarim isinize yarar.

Ama yukarda yazdigim gibi eger resimler kaynak kodda http siz ise klasörü belirtmeniz lazim. Eger http li ve http siz karisik resimler varsa ona göre bir kac if sorgusu ile kontrolü saglayabilirsiniz.
 

eRLySL

0
İyinet Üyesi
Katılım
25 Mart 2008
Mesajlar
424
Reaction score
1
PHP:
$cek	=	"<img src=\"resim1.jpg\"><img src=\"resim2.jpg\"><img src=\"resim3.jpg\">";
$key	=	"/src=\"(.*?)\"/i";
$bas	=	preg_match($key,$cek,$yaz);

kullanımıda

PHP:
echo "<img $yaz[0]>";

şeklinde kolay gelsin ;)
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst