• 20-07-2009, 16:20:50
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Php'de bot yazmak üzerine ilk denemelerim. Kodların sonuna gelmişken takıldığım iki konu oldu. Bunlardan birisi
    Veri almak istemediğim bir bölümü nasıl örtebilirim?

    Örneğin;

    <A title=" " href="..../kategori.asp?kategori=31" class="sol">• Mardin Fıkraları</A>
    
    <A title=" " href="..../kategori.asp?kategori=29" class="sol">• Avcı Fıkraları</A>
    
    <A href="..../kategori.asp?kategori=9999" title="bu bir denemedir" class="sol" >• Komik Yazılar </A>
    ilk iki link normal fakat üçüncü linkte title var. veriyi aşağıdaki şu şekilde çekiyorum;

    preg_match_all('#kategori=(.*?)" class="sol">&\#8226;(.*?)</A#si', $icerik, $sonuc, PREG_SET_ORDER);
    3. linkteki title araya farklı olarak eklendiği için bunu regexp kodları içerisine nasıl ekleyeceğimi bilmiyorum. yani bu bölümün gözükmemesini önemsenmemesini istiyorum.

    bir diğer konu ise aşağıdaki gibi boşluklarla dolu bir alandan nasıl veri çekeceğim;

      src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script>			  </td>
    
    			  
                    <td>Buradaki veriyi çeeekkbr>
    
    				
    				<br>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">

    Üstte sadece "Buradaki veriyi çeeekk" yazan yeri çekmek istiyorum. Aşağıda ki gibi bir kod yazdım fakat arka arkaya pek çok sayfayı çektiğim ve "<>" sanırım gibi karakterleride aldığım için sadece ilk sayfa çıktı.

    Yazdığım kod;
    preg_match_all('#pagead2.googlesyndication.com/pagead/show_ads.js">(.*?)<table#si', $site, $data, PREG_SET_ORDER);
  • 20-07-2009, 16:28:48
    #2
    Misafir
    $veri = strip_tags($veri, "<a>");

    <a> örnektir. Bunla alınmaması gereken yeri yapabilirsin
  • 20-07-2009, 16:30:48
    #3
    Üyeliği durduruldu
    önce [ENTER] karakterlerini yoket
    str_replace("\n","",$icerik);

    enter'lari yok edilmiş icerigi incele işin kolaylaşir.


    class="sol" >• Komik Yazılar </A>
    burada da
    class="sol" >• ile </A> arasını alsan olmuyor mu
  • 20-07-2009, 17:38:51
    #4
    Üyeliği durduruldu
    elektron adlı üyeden alıntı: mesajı görüntüle
    Php'de bot yazmak üzerine ilk denemelerim. Kodların sonuna gelmişken takıldığım iki konu oldu. Bunlardan birisi
    Veri almak istemediğim bir bölümü nasıl örtebilirim?
    Örneğin;
    <A title=" " href="..../kategori.asp?kategori=31" class="sol">• Mardin Fıkraları</A>
    <A title=" " href="..../kategori.asp?kategori=29" class="sol">• Avcı Fıkraları</A>
    <A href="..../kategori.asp?kategori=9999" title="bu bir denemedir" class="sol" >• Komik Yazılar </A>
    ilk iki link normal fakat üçüncü linkte title var. veriyi aşağıdaki şu şekilde çekiyorum;
    preg_match_all('#kategori=(.*?)" class="sol">&\#8226;(.*?)</A#si', $icerik, $sonuc, PREG_SET_ORDER);
    3. linkteki title araya farklı olarak eklendiği için bunu regexp kodları içerisine nasıl ekleyeceğimi bilmiyorum. yani bu bölümün gözükmemesini önemsenmemesini istiyorum.
    preg_match_all('#kategori=(.*?)"([^>].*?)>\&\#8226;(.*?)</A#si', $icerik, $sonuc, PREG_SET_ORDER);

    elektron adlı üyeden alıntı: mesajı görüntüle
    bir diğer konu ise aşağıdaki gibi boşluklarla dolu bir alandan nasıl veri çekeceğim;
      src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script>			  </td>
                    <td>Buradaki veriyi çeeekkbr>
    				<br>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    Üstte sadece "Buradaki veriyi çeeekk" yazan yeri çekmek istiyorum. Aşağıda ki gibi bir kod yazdım fakat arka arkaya pek çok sayfayı çektiğim ve "<>" sanırım gibi karakterleride aldığım için sadece ilk sayfa çıktı.
    Yazdığım kod;
    preg_match_all('#pagead2.googlesyndication.com/pagead/show_ads.js">(.*?)<table#si', $site, $data, PREG_SET_ORDER);
    preg_match_all('#pagead2.googlesyndication.com/pagead/show_ads.js">(.*?)<table#si', $site, $data, PREG_SET_ORDER);
    buradan dönen $data dizisindeki gerekli değişkene öncelikle strip_tags() ardından da trim uyguladınmı istediğin yer kalır sadece elinde.
  • 20-07-2009, 17:53:46
    #5
    preg_match_all('#kategori=(.*?)"([^>].*?)>\&\#8226;(.*?)</A#si', $icerik, $sonuc, PREG_SET_ORDER);
    teşekkür ederim fakat bu bölümde bir hata var sanırım. sadece alınmaması gereken kısımları aldı. tam tersini alması için ne yapmam gerekiyor.

    ikinci konuyu hallettim çok sağolun arkadaşlar.

    fakat art arda verileri çekmiyor sadece ilkini çekiyor. bunun nedeni ne olabilir?;

    	preg_match_all("#/fikra\/(.*?)\"#si",$url,$gelen);
    	for($x=0; $x<count($gelen[1]); $x++)
    			{
    			$site = file_get_contents($sayfa.$gelen[1][$x]);
    			echo $sayfa.$gelen[1][$x]."<br />";
    			//$site = str_replace("\n","",$site);
    			preg_match_all('#pagead2.googlesyndication.com/pagead/show_ads.js">(.*?)<table#si', $site, $data, PREG_SET_ORDER);
    		
    			echo strip_tags($data[$x][1])."<br />";
    			}
  • 20-07-2009, 18:07:59
    #6
    Üyeliği durduruldu
    elektron adlı üyeden alıntı: mesajı görüntüle
    preg_match_all('#kategori=(.*?)"([^>].*?)>\&\#8226;(.*?)</A#si', $icerik, $sonuc, PREG_SET_ORDER);
    teşekkür ederim fakat bu bölümde bir hata var sanırım. sadece alınmaması gereken kısımları aldı. tam tersini alması için ne yapmam gerekiyor.
    bi zahmet dönen dizinin indeks değerini değiştirmen gerekiyor.