• 14-04-2013, 04:46:56
    #1
    Kurumsal PLUS
    Merhabalar,

    Bu şekilde yaptığımda sadece bir tane <a href= içerisindeki site adresini çekiyor, oysa ben hepsini istiyorum, bunu nasıl yapabilirim?

    <?php
    
    
    function ara($bas, $son, $yazi)
    {
        @preg_match_all('/' . preg_quote($bas, '/') .
        '(.*?)'. preg_quote($son, '/').'/i', $yazi, $m);
        return @$m[1];
    }
    
    
    $site = "http://www.icerigincekilecegiadres.com";
    $icerik = file_get_contents($site);
    
    $site_adresi = ara('<a href="', '">', $icerik);
    
    
    echo 'Site Adresi: ' . $site_adresi[0]  ;
    
    
    ?>
  • 14-04-2013, 05:03:09
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    <?php
    $site = "http://www.icerigincekilecegiadres.com";
    $icerik = file_get_contents($site);
    
    $pattern = "@<a href=\"(.*?)\">(.*?)</a>@si";
    
    preg_match_all($icerik,$pattern,$bulunanlar);
    
    print_r($bulunanlar);
    ?>
  • 14-04-2013, 05:16:45
    #3
    Kurumsal PLUS
    bu sefer hata şöyle oldu
    Warning: preg_match_all() : Unknown modifier '<'
  • 14-04-2013, 13:54:11
    #4
    preg_match_all($icerik,$pattern,$bulunanlar);

    bunun ile

    preg_match_all($pattern,$icerik,$bulunanlar);

    bunu yer değiştiriniz.
  • 14-04-2013, 14:26:19
    #5
    Kurumsal PLUS
    İkinize de teşekkür ederim, oldu.

    Lakin çok bilgi çekti bu kadar bilgiyi ayıklamak zor olacak benim için bana önerebileceğiniz başka bir yol var mı?

    sitenin belli bölümünde linkler var, sadece bu linkleri sırasıyla çeksin istiyorum.
  • 14-04-2013, 14:32:57
    #6
    Sitenin belirli bir bölümünden veri çekecekseniz önce o alanı preg_match ile ayırıp içerisinde preg_match_all kullanarak sadece o arada ki <a hrefleri çekebilirsiniz.

    Alternatif 2 : Çekeceğiniz <a hreflere bir class verilmişse örneğin <a href="" class="linkler" gibi verilerinizi bu şekilde çekebilirsiniz.

    Alternatif 3 : link bazlı veriler çekeblirsiniz örneğin sizin çekecekleriniz sadece <a href="http://siteadi.com/haberler/....." gibi ise veri çekimlerini o alandan başlatabilirsiniz.
  • 14-04-2013, 14:47:11
    #7
    Kurumsal PLUS
    Msn adlı üyeden alıntı: mesajı görüntüle
    Sitenin belirli bir bölümünden veri çekecekseniz önce o alanı preg_match ile ayırıp içerisinde preg_match_all kullanarak sadece o arada ki <a hrefleri çekebilirsiniz.

    Alternatif 2 : Çekeceğiniz <a hreflere bir class verilmişse örneğin <a href="" class="linkler" gibi verilerinizi bu şekilde çekebilirsiniz.

    Alternatif 3 : link bazlı veriler çekeblirsiniz örneğin sizin çekecekleriniz sadece <a href="http://siteadi.com/haberler/....." gibi ise veri çekimlerini o alandan başlatabilirsiniz.
    1. dediğiniz en uygun olanı. teşekkürler gösterdiğiniz yol için.
  • 14-04-2013, 18:31:25
    #8
    Üyeliği durduruldu
    <?php
    function LinkleriBul($Data) {
    
        $xml = new DOMDocument();
        @$xml->loadHTMLFile($Data['url']);
    	
        foreach($xml->getElementsByTagName('a') as $link) {
    		if(strpos($link->getAttribute('href'),'http') !== false && strpos($link->getAttribute('href'),$Data['siteadi']) == false)
    		{
    			$Linkler[] = array('url' => $link->getAttribute('href'), 'baslik' => $link->nodeValue);
    		}
        }
    
        return $Linkler;
    }
    
    $Data = array(
    				'url' 		=> 'http://www.dmoz.org/World/T%C3%BCrk%C3%A7e/Ekonomi_ve_%C4%B0%C5%9F_D%C3%BCnyas%C4%B1/%C4%B0nsan_Kaynaklar%C4%B1/',
    				'siteadi'	=>	'dmoz.org'
    			);	
    $Linkler = LinkleriBul($Data);
    			
    echo "<pre>";
    print_r($Linkler);
    echo "<pre>";
    
    ?>
    Linkbul Fonksiyonuna dizi vermelisiniz, dizi içeriği yukarıda $Data değişkeninde belirtilmiştir.

    $Data = array(
    				'url' 		=> 'Çekilecek Link. örneğin dmoz.org/bilmemne.html',
    				'siteadi'	=>	'Sitenin İç Linklerini engellemek için www kullanmadan site adresi. örneğin dmoz.org gibi.'
    			);
    Bu şekilde dener misiniz?
  • 14-04-2013, 19:21:13
    #9
    Kurumsal PLUS
    Arkadaş sorunu çözmüştür, kendisine teşekkür ediyorum.