• 20-06-2009, 11:35:37
    #1
    Merhaba arkadaşlar;

    <div id "makale">
    <br><td><pre><bla>bu alınmayacak</bla></pre></td>
    <div>
    <div id "makale">
    <br><td><pre><bla>bu alınmayacak</bla></pre></td>
    <div>
    <div id "makale">
    <br><td><pre><bla>bu alınmayacak</bla></pre></td>
    <div>
    <div id "makale">
    <br><td><pre><bla>bu alınacak</bla></pre></td>
    <div>
    <div id "makale">
    <br><td><pre><bla>bu alınmayacak</bla></pre></td>
    <div>
    yukarıdaki örnekte de oldugu gibi aynı div ler içerisinde 5 adet yazı var fakat ben kırmızı olanı nı almak istiyorum veya 7.sini böyle durumlarda hangi yönteme başvuruyoruz. ilginiz için şimdiden teşekkürler..
  • 20-06-2009, 12:19:58
    #2
    Eposta Aktivasyonu Gerekmekte
    mesala preg_match_all ile alıyoruz
    dönen verilerileri array şeklinde oluyor biliyoruz.
    echo $donenveri[1][0];

    şeklinde kullandığımızda kırmızıyla gösterdiğim yer( 1 ) kaçıncı aradığımız bölge.

    mesala
    <td>(.*?)</td><td>(.*?)</td>
    yaptığımızda 1 dersek yeşil yer , 2 dersek turuncu yeri alırız.


    Mavi yerdeki yani 2. kısım ise eşleşen verilerden kaçıncısı olduğudur.
  • 20-06-2009, 12:48:25
    #3
    hocam sayfada 1000 satırlık kodlar var ilk div 15 diğeri 268 diğeri 789 satırlarda diye gidiyor haliylede yüzlerce <td> vardır.
    bunun hepsini nasıl ayarlayacağız.
  • 20-06-2009, 12:54:50
    #4
    Eposta Aktivasyonu Gerekmekte
    echo $donenveri[1][15];
    echo $donenveri[1][268];
    echo $donenveri[1][789];
  • 20-06-2009, 13:04:57
    #5
    Hocam şöyle anlatayım
    1-     preg_match("#<title>(.*)-#i",$veri,$t);
    2-	preg_match("#-(.*)R10 Kategori<\/title>#i",$veri,$tt);
    3-	preg_match("#<div id \"makale\"><br><td><pre><bla>(.*)<\/bla>#i",$veri,$ttt);
    Benim yapmak istediğim 3 preg_match düzeltmek. yani birbirine benzer divler arasından benim belirlediğim div'in içeriğini almak.
  • 20-06-2009, 13:12:41
    #6
    print_r($ttt);
    Böyle çekilen verilere bakıp hangi veriyi istiyorsan onunla işlem yapabilirsin.

    echo $ttt["35"];
  • 20-06-2009, 13:20:35
    #7
    Bütün verileri almıyor zaten ilk gelen <div i alıp ekrana basıyor.
  • 20-06-2009, 13:22:44
    #8
    o zaman preg_match yerine preg_match_all kullanacaksın
  • 20-06-2009, 13:34:53
    #9
    star2218 adlı üyeden alıntı: mesajı görüntüle
    o zaman preg_match yerine preg_match_all kullanacaksın
    Onuda kullandım ve kullanınca da hiç almıyor.

    yalnız preg_match'ta

    $ttt[0] olunca tüm sayfa geliyor
    $ttt[1] ilk gelen div'i
    $ttt[2] 3 4 5 te boş olarak dönüyor.