• 16-11-2008, 00:30:14
    #1
    selam arkadaşlar ben herhangi bir url'den resim linklerini bulmak istiyorum ancak hepsini değil sadece ilk 3 tanesini, alttaki kod bütün sayfayı tarıyor ve bütün linkleri buluyor ve dolayısıyla zaman kaybı oluyor ve sayfa açılma süresi artıyor bunu en az düşürmem lazım

        $page = 0;
        $URLr = "".$url.""; // burdaki ikinci url benim aramak istediğim url
         $page = @fopen($URLr, "r");
         $page = @fopen($URLr, "r");
         while(!feof($page)) {
         $line = fgets($page, 100);
         while(eregi("http://[^\"]*\.jpg", $line, $match)) {
        $main_smarty->assign('hedefresim',$match[0]);// birde bu satır bu haliyle sadece tek resim gösteriyor ama sonuçta program bütün resimleri tarıyor
       
         $replace = ereg_replace("\?", "\?", $match[0]);
         $line = ereg_replace($replace, "", $line);
        }
        }
           fclose($page);
        }




    yardımlarınız için şimdiden teşekkürler..
  • 20-03-2009, 14:55:38
    #2
    Üyeliği durduruldu
    preg_match_all ile tamamını taratıp, sonuçlardan ilk 3 ünü almaktan başka yolu yok. ilk 3 resmi alınca aramayı durdur diye bir komut yok bildiğim. substr ve preg_match a offset vermekle birşeyler yapılabilir belki ama hem karmaşık olur hem performans olarak kazancın olurmu şüpheliyim.
  • 20-03-2009, 15:47:57
    #3
    Üyeliği durduruldu
    biyere bi sayac koy, her resim linki aldiginda sayaci bir artir.. sayac 3 oldugunda döngüden cik.. böyle bisey olabilir bence..
  • 20-03-2009, 15:50:15
    #4
    preg_match_all taratip for ile bir döngü yaratip döngüyü 3 de durdurursun
    for ($i = 0; $i < 4; $i++)
    {
    //işlemler
    }
    3. işlemi yapar durur.
  • 20-03-2009, 16:04:00
    #5
    Üyeliği durduruldu
    verdiginiz kodlarda tüm satırlar boyunca taratiyor.

    while(eregi("http://[^\"]*\.jpg", $line, $match)) {
    satırın yerine şunu yazarsaniz calisir

    r$ = 0;
    while(eregi("http://[^\"]*\.jpg", $line, $match)) { 
            $r++;
            if($r==4){
                    break;
            }