• 27-01-2014, 19:54:31
    #1
    Beyler Bir noktada tıkandım neyi denediysem çözüm olmadı...

    <?php
    	
    	
    	preg_match_all('#a href=(.*?)#si',$sayfa,$linkleri_al);
    	
    	foreach ($linkleri_al[1] as $deger=>$linkler ){
    	
    	// bla bla bla bla
    	
    	
    	preg_match_all('#img=(.*?)#si',$ikinci_sayfa,$resimleri_al);
    	
    	foreach ($resimleri_al[1] as $deger_2=>$resimler ){
    	
    	//resimler değişkeninde 5 adet resim var
    	
    	}
    	
    	// bu resimleri döngü dışında her birini bir değişkene aktarmam lazım
    	// örnek $resim1 = $resimler[0] gibi;
    
    }
    
     ?>
  • 27-01-2014, 20:10:31
    #2
    haXan1711 adlı üyeden alıntı: mesajı görüntüle
    Beyler Bir noktada tıkandım neyi denediysem çözüm olmadı...

    <?php
    	
    	
    	preg_match_all('#a href=(.*?)#si',$sayfa,$linkleri_al);
    	
    	foreach ($linkleri_al[1] as $deger=>$linkler ){
    	
    	// bla bla bla bla
    	
    	
    	preg_match_all('#img=(.*?)#si',$ikinci_sayfa,$resimleri_al);
    	
    	foreach ($resimleri_al[1] as $deger_2=>$resimler ){
    	
    	//resimler değişkeninde 5 adet resim var
    	
    	}
    	
    	// bu resimleri döngü dışında her birini bir değişkene aktarmam lazım
    	// örnek $resim1 = $resimler[0] gibi;
    
    }
    
     ?>
    Resimler zaten $resimleri_al arrayında mevcut direk ordan kullanabilirsin.
    Daha rahat kullanmak için foreach içinde baska bir arraya da alabilirsin.
    Yok illa böyle yapacam diyorsan
    $say = 0;
    preg_match_all('#img=(.*?)#si', $ikinci_sayfa, $resimleri_al);
    foreach ($resimleri_al[1] as $deger_2 => $resimler) {
        $say++;
        $isim1 = "resim" . $say;
        $$isim2 = $resimler[0]; //$resimler[0] i salladim sen onu ayarlarsin gelen veriye göre.
    }
    bu şekilde yapabilirsin. $resim1 $resim2 $resim3 diye gider.
  • 27-01-2014, 20:19:16
    #3
    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    Resimler zaten $resimleri_al arrayında mevcut direk ordan kullanabilirsin.
    Daha rahat kullanmak için foreach içinde baska bir arraya da alabilirsin.
    Yok illa böyle yapacam diyorsan
    $say = 0;
    preg_match_all('#img=(.*?)#si', $ikinci_sayfa, $resimleri_al);
    foreach ($resimleri_al[1] as $deger_2 => $resimler) {
        $say++;
        $isim1 = "resim" . $say;
        $$isim2 = $resimler[0]; //$resimler[0] i salladim sen onu ayarlarsin gelen veriye göre.
    }
    bu şekilde yapabilirsin. $resim1 $resim2 $resim3 diye gider.

    Bende dizi içinde olduğunu düşündüm ve

    $resim1 = $resimler[0];
    yaptığımda $resimler değişkeni şayet "http://www.resimlinki.com/1.jpg" ise bu metindeki ilk karakteri alıyor.

    Yani ekrana echo $resim1; yazdırdığımda h sonucunu veriyor... O yüzden $resimler değişkeninin içerisindekileri bir diziye aktarmam gerekiyor sandım...

    Netice sorun çözülmedi maalesef..
  • 27-01-2014, 20:48:55
    #4
    haXan1711 adlı üyeden alıntı: mesajı görüntüle
    Bende dizi içinde olduğunu düşündüm ve

    $resim1 = $resimler[0];
    yaptığımda $resimler değişkeni şayet "http://www.resimlinki.com/1.jpg" ise bu metindeki ilk karakteri alıyor.

    Yani ekrana echo $resim1; yazdırdığımda h sonucunu veriyor... O yüzden $resimler değişkeninin içerisindekileri bir diziye aktarmam gerekiyor sandım...

    Netice sorun çözülmedi maalesef..
    foreach içindeki $resimler bir dizi değil de string olduğu için $resimler[0] yaparsan stringin ilk harfini alirsin yani "h" harfi

    orada
    $resim[] = $resimler;
    yapman lazim. $resim dizisinde resimleri toplarsin. istersen print_r($resim); yapınca görürsün arrayın içindekileri. daha sonra $resim[0] $resim[1] $resim[2] şeklinde kullanabilirsin.
  • 27-01-2014, 21:24:36
    #5
    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    foreach içindeki $resimler bir dizi değil de string olduğu için $resimler[0] yaparsan stringin ilk harfini alirsin yani "h" harfi

    orada
    $resim[] = $resimler;
    yapman lazim. $resim dizisinde resimleri toplarsin. istersen print_r($resim); yapınca görürsün arrayın içindekileri. daha sonra $resim[0] $resim[1] $resim[2] şeklinde kullanabilirsin.
    O yöntemi denedim çalışıyor dediğiniz gibi fakat nedense şu şekilde hata veriyor;

    Örnek:
    ilk preg_match_all'da 8 tane link alıyor diyelim.

    ikinci preg_match_all'da her bir linke girip sayfadaki 5 adet resmi alması gerekiyor ve ekrana resim linklerini basması gerekiyor.

    8 tane linki alıyor sorun yok. Her bir sayfaya girip resimleri de alıyor diye beklerken ilk linke girip resimleri alıp ekrana basıyor sonraki aşamada sürekli ilk linkteki resimleri gösteriyor. Yani diğer 7 linkteki resimleri göstermiyor....

    Karmaşık bir fonksiyon yok yukarıda verdiğim foreach döngülerinde oluyor bu olay nedense....

    Bir türlü çözemedim...
  • 27-01-2014, 21:31:55
    #6
    2. preg_match_all'in hemen altinda
    var_dump($resimleri_al[1]);
    yazin. 8 tane link için 8 tane array i ekrana basmasi lazim.
  • 27-01-2014, 21:38:17
    #7
    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    2. preg_match_all'in hemen altinda
    var_dump($resimleri_al[1]);
    yazin. 8 tane link için 8 tane array i ekrana basmasi lazim.
    Evet dediğiniz gibi almak istediğim tüm linklere ait resimleri ekrana bastı...



    Peki güzel de ben bunları nasıl tek tek değişken içerisine koyacağım ? Yani aslında şu anda var_dump ile istediğim şeyleri ekrana bastı da resimleri dediğim gibi nasıl değişkenler içerisine koyucam ? Sizide yordum kusuruma bakmayın hakkınızı helal edin...
  • 27-01-2014, 21:49:01
    #8
    haXan1711 adlı üyeden alıntı: mesajı görüntüle
    Evet dediğiniz gibi almak istediğim tüm linklere ait resimleri ekrana bastı...



    Peki güzel de ben bunları nasıl tek tek değişken içerisine koyacağım ? Yani aslında şu anda var_dump ile istediğim şeyleri ekrana bastı da resimleri dediğim gibi nasıl değişkenler içerisine koyucam ? Sizide yordum kusuruma bakmayın hakkınızı helal edin...
    foreach ile döndürdüğünüz için değişkene alamazsınız.
    aşağıdaki gibi bir foreach kullandınız varsayalım
    foreach($array as $key=>$value){
    $degisken1 = $value;
    }

    şeklinde bir atama yaparsanız $degisken1 değeriniz dizideki en son eleman olarak size dönecektir. değişkende değilde arrayda tutarsanız sorunsuz kullanabilirsiniz.
    sizin ilk verdiğiniz örneğe göre

    preg_match_all('#a href=(.*?)#si',$sayfa,$linkleri_al);
    foreach ($linkleri_al[1] as $deger=>$linkler ){
    	preg_match_all('#img=(.*?)#si',$ikinci_sayfa,$resimleri_al);
    	foreach ($resimleri_al[1] as $deger_2=>$resimler ){
              $sonuc[$deger][]=$resimler; 
    	}
    }
    üstteki gibi bir yapı kullanırsanız
    var_dump($sonuc);
    dediğinizde hepsini almış olursunuz.

    e aldıkta bunu nasıl kullanacağız.
    1. linkin 1. resmini almak için
    echo $sonuc[0][0];
    komutunu kullanabilirsiniz. Not: diziler 0 dan başlar.

    2. linkin 5. resmini almak için
    echo $sonuc[1][4];
    şeklinde...
  • 27-01-2014, 21:58:49
    #9
    S_HA_DO_W adlı üyeden alıntı: mesajı görüntüle
    foreach ile döndürdüğünüz için değişkene alamazsınız.
    aşağıdaki gibi bir foreach kullandınız varsayalım
    foreach($array as $key=>$value){
    $degisken1 = $value;
    }

    şeklinde bir atama yaparsanız $degisken1 değeriniz dizideki en son eleman olarak size dönecektir. değişkende değilde arrayda tutarsanız sorunsuz kullanabilirsiniz.
    sizin ilk verdiğiniz örneğe göre

    preg_match_all('#a href=(.*?)#si',$sayfa,$linkleri_al);
    foreach ($linkleri_al[1] as $deger=>$linkler ){
    	preg_match_all('#img=(.*?)#si',$ikinci_sayfa,$resimleri_al);
    	foreach ($resimleri_al[1] as $deger_2=>$resimler ){
              $sonuc[$deger][]=$resimler; 
    	}
    }
    üstteki gibi bir yapı kullanırsanız
    var_dump($sonuc);
    dediğinizde hepsini almış olursunuz.

    e aldıkta bunu nasıl kullanacağız.
    1. linkin 1. resmini almak için
    echo $sonuc[0][0];
    komutunu kullanabilirsiniz. Not: diziler 0 dan başlar.

    2. linkin 5. resmini almak için
    echo $sonuc[1][4];
    şeklinde...

    Çok teşekkürler bu işimi görecek...

    Diğer arkadaşında ellerine sağlık sağolsun çok yardımcı oldu...