• 15-12-2008, 06:20:09
    #1
    Kurumsal PLUS
    Bu uygulama ile, istediğiniz bir wordpress blog’dan son mesajları çekebilirsiniz. Hem de veritabanı bilgilerine ihtiyaç duymadan, yazılan son mesajların başlığını sayfada gösterebiliriz.

    İlk olarak, verileri çekebilmemiz için bize gereken şey, verileri çekeceğimiz wordpress blog sayfasının RSS adresi. Mesela, t-infection.com ‘un rss adresi t-infection.com | tasarım oyuncakları, web teknolojileri ‘dir.

    Bunu belirleyip not aldıktan sonra, PHP yazmaya başlayalım.

    İlk olarak, son kaç mesajı çekeceğimizi ve hangi RSS adresinden çekeceğimizi belirtelim. Bu örnekte ben son 5 mesajı alıyorum.

    <?php
    $mesajsayisi = 5;
    $adres = "http://www.t-infection.com/feed/rss/";
    ?>
    Bunu belirttikten sonra, "for" döngüsünde kullancağımız bir geçici değer oluşturalım, bu değeri for döngüsünde kullanacağız ve mesaj sayısının bir fazlası olması gerekiyor, böylece istediğimiz sayıda mesajı alsın ve dursun.

    <?php
    $mesajsayisi = 5;
    $adres = "http://www.t-infection.com/feed/rss/";
    
    $c = $mesajsayisi+1;
    ?>
    Şimdi ise, arasinial isminde bir fonksiyon oluşturalım. Bu fonksiyon, bir değerdeki istediğimiz bölümlerin arasındaki kısmı çekip alacak bir fonksiyondur.

    <?php
    $mesajsayisi = 5;
    $adres = "http://www.t-infection.com/feed/rss/";
    
    $c = $mesajsayisi+1;
    
    function arasinial($a,$b,$data,$kacinci)
    {
    $x = explode($a,$data);
    $z = explode($b,$x[$kacinci]);
    $oh = $z[0];
    if($x && $z) { return $oh; } else { return false; }
    }
    ?>
    Bu fonksiyonumuzu da oluşturduktan sonra, RSS sayfasını açıp içindeki verileri bir değişken olarak kaydedelim. bu iş için bize file_get_contents fonksiyonu gerekiyor.

    <?php
    $mesajsayisi = 5;
    $adres = "http://www.t-infection.com/feed/rss/";
    
    $c = $mesajsayisi+1;
    
    function arasinial($a,$b,$data,$kacinci)
    {
    $x = explode($a,$data);
    $z = explode($b,$x[$kacinci]);
    $oh = $z[0];
    if($x && $z) { return $oh; } else { return false; }
    }
    
    $tumsayfa = file_get_contents($adres);
    ?>
    $tumsayfa değişkenine RSS içindeki verilerin tamamını aktardık. Yani, bu RSS sayfasının bütün kaynak kodunu içeriyor. Bizim şimdi yapmamız gereken, bu kaynak kodunu parçalayıp son 5 mesajı almak. Fakat o da ne! RSS sayfasının karakter kodlaması utf8 olduğu için, ISO-8859-9 kodlama kullanan sayfalarda çekilen veriler bozuk geliyor! Önce bu bozuk harfleri düzeltelim, sonra parçalamaya başlayalım.

    <?php
    $mesajsayisi = 5;
    $adres = "http://www.t-infection.com/feed/rss/";
    
    $c = $mesajsayisi+1;
    
    function arasinial($a,$b,$data,$kacinci)
    {
    $x = explode($a,$data);
    $z = explode($b,$x[$kacinci]);
    $oh = $z[0];
    if($x && $z) { return $oh; } else { return false; }
    }
    
    $tumsayfa = file_get_contents($adres);
    
    $tumsayfa = str_replace("ÄŸ", "ğ", $tumsayfa);
    $tumsayfa = str_replace("Äž", "Ğ", $tumsayfa);
    $tumsayfa = str_replace("ü", "ü", $tumsayfa);
    $tumsayfa = str_replace("Ü", "Ü", $tumsayfa);
    $tumsayfa = str_replace("ÅŸ", "ş", $tumsayfa);
    $tumsayfa = str_replace("Åž", "Ş", $tumsayfa);
    $tumsayfa = str_replace("İ", "İ", $tumsayfa);
    $tumsayfa = str_replace("ı", "ı", $tumsayfa);
    $tumsayfa = str_replace("ö", "ö", $tumsayfa);
    $tumsayfa = str_replace("Ö", "Ö", $tumsayfa);
    $tumsayfa = str_replace("ç", "ç", $tumsayfa);
    $tumsayfa = str_replace("Ç", "Ç", $tumsayfa);
    ?>
    Bu işlemi ben arka arkaya str_replace kullanarak yaptım. Türkçe karakterlerin bozuk olan utf8 karşılıklarını türkçe halleri ile değiştirdim. Aynı işlem array ile de yapılabilir, nasıl isterseniz.

    Şimdi sırada RSS içindeki <item> kısımlarını kesip, yani mesajları kesip gerisini atmaya geldi. Bu iş için arasinial fonksiyonunu kullanıyoruz ve "<language>en</language>" ile "</channel>" kısımlarının arasını alıp ayrı bir değişken belirliyoruz. Böylece elimizde sadece <item> içeren mesaj kısımları kalıyor.

    <?php
    $mesajsayisi = 5;
    $adres = "http://www.t-infection.com/feed/rss/";
    
    $c = $mesajsayisi+1;
    
    function arasinial($a,$b,$data,$kacinci)
    {
    $x = explode($a,$data);
    $z = explode($b,$x[$kacinci]);
    $oh = $z[0];
    if($x && $z) { return $oh; } else { return false; }
    }
    
    $tumsayfa = file_get_contents($adres);
    
    $tumsayfa = str_replace("ÄŸ", "ğ", $tumsayfa);
    $tumsayfa = str_replace("Äž", "Ğ", $tumsayfa);
    $tumsayfa = str_replace("ü", "ü", $tumsayfa);
    $tumsayfa = str_replace("Ü", "Ü", $tumsayfa);
    $tumsayfa = str_replace("ÅŸ", "ş", $tumsayfa);
    $tumsayfa = str_replace("Åž", "Ş", $tumsayfa);
    $tumsayfa = str_replace("İ", "İ", $tumsayfa);
    $tumsayfa = str_replace("ı", "ı", $tumsayfa);
    $tumsayfa = str_replace("ö", "ö", $tumsayfa);
    $tumsayfa = str_replace("Ö", "Ö", $tumsayfa);
    $tumsayfa = str_replace("ç", "ç", $tumsayfa);
    $tumsayfa = str_replace("Ç", "Ç", $tumsayfa);
    
    $veriler = arasinial("<language>en</language>", "</channel>", $tumsayfa, 1);
    ?>
    Şimdi ise, bu <item> kısımlarının her birini parçalayalım. Bu iş için explode bize yardımcı olacak. Buradaki kritik nokta şu ki, explode fonksiyonu kullanıldığında, patlatılan değerin ilk kısmı [0] olarak atanır. Fakat biz <item> kısmını patlatacağımız için ve bizim değişkenimiz <item> ile başladığı için, ilk değer olan [0] değeri boş olacak. Bu yüzden for döngümüzü 0 yerine 1 ile başlatacağız ve yine aynı sebepten dolayı istediğimiz mesaj sayısının bir fazlası olan geçici bir değişken tanımladık.

    <?php
    $mesajsayisi = 5;
    $adres = "http://www.t-infection.com/feed/rss/";
    
    $c = $mesajsayisi+1;
    
    function arasinial($a,$b,$data,$kacinci)
    {
    $x = explode($a,$data);
    $z = explode($b,$x[$kacinci]);
    $oh = $z[0];
    if($x && $z) { return $oh; } else { return false; }
    }
    
    $tumsayfa = file_get_contents($adres);
    
    $tumsayfa = str_replace("ÄŸ", "ğ", $tumsayfa);
    $tumsayfa = str_replace("Äž", "Ğ", $tumsayfa);
    $tumsayfa = str_replace("ü", "ü", $tumsayfa);
    $tumsayfa = str_replace("Ü", "Ü", $tumsayfa);
    $tumsayfa = str_replace("ÅŸ", "ş", $tumsayfa);
    $tumsayfa = str_replace("Åž", "Ş", $tumsayfa);
    $tumsayfa = str_replace("İ", "İ", $tumsayfa);
    $tumsayfa = str_replace("ı", "ı", $tumsayfa);
    $tumsayfa = str_replace("ö", "ö", $tumsayfa);
    $tumsayfa = str_replace("Ö", "Ö", $tumsayfa);
    $tumsayfa = str_replace("ç", "ç", $tumsayfa);
    $tumsayfa = str_replace("Ç", "Ç", $tumsayfa);
    
    $veriler = arasinial("<language>en</language>", "</channel>", $tumsayfa, 1);
    
    $parcalar = explode("<item>", $veriler);
    ?>
    Bu patlatma işini de yaptıktan sonra geriye sadece for döngüsü kaldı. Bu for döngüsünde <title> ve </title> kısımlarının arasını alıp bunu başlık yapacağız, "<link>" ve "</link>" kısımlarının arasını alarak bunu url yapacağız ve linkimizi oluşturacağız. Açıklamaları for döngüsünün kodlarının içinde bulacaksınız.

    Bu işlemden sonra ise, aşağıdaki gibi, uygulamamız hazır ve çalışır durumda.

    <?php
    $mesajsayisi = 5;
    $adres = "http://www.t-infection.com/feed/rss/";
    
    $c = $mesajsayisi+1;
    
    function arasinial($a,$b,$data,$kacinci)
    {
    $x = explode($a,$data);
    $z = explode($b,$x[$kacinci]);
    $oh = $z[0];
    if($x && $z) { return $oh; } else { return false; }
    }
    
    $tumsayfa = file_get_contents($adres);
    
    $tumsayfa = str_replace("ÄŸ", "ğ", $tumsayfa);
    $tumsayfa = str_replace("Äž", "Ğ", $tumsayfa);
    $tumsayfa = str_replace("ü", "ü", $tumsayfa);
    $tumsayfa = str_replace("Ü", "Ü", $tumsayfa);
    $tumsayfa = str_replace("ÅŸ", "ş", $tumsayfa);
    $tumsayfa = str_replace("Åž", "Ş", $tumsayfa);
    $tumsayfa = str_replace("İ", "İ", $tumsayfa);
    $tumsayfa = str_replace("ı", "ı", $tumsayfa);
    $tumsayfa = str_replace("ö", "ö", $tumsayfa);
    $tumsayfa = str_replace("Ö", "Ö", $tumsayfa);
    $tumsayfa = str_replace("ç", "ç", $tumsayfa);
    $tumsayfa = str_replace("Ç", "Ç", $tumsayfa);
    
    $veriler = arasinial("<language>en</language>", "</channel>", $tumsayfa, 1);
    
    $parcalar = explode("<item>", $veriler);
    
    for($i=1;$i<$c;$i++) {
    $a = arasinial("<title>", "</title>", $parcalar[$i], 1); //explode ile parçaladğımız değerin arasını alıp değişken belirliyoruz
    $b = arasinial("<link>", "</link>", $parcalar[$i], 1); //explode ile parçaladğımız değerin arasını alıp değişken belirliyoruz
    echo "<a href=\"".$b."\">".$a."</a><br>"; // nihayet sayfaya basılacak olan link
    }
    ?>
    Umarım iyi anlatabilmişimdir, umarım işinize yarar.

    Alıntı değildir.
  • 15-12-2008, 09:49:04
    #2
    bu faydalı döküman için çok teşekkür ediyorum,..
  • 15-12-2008, 09:50:13
    #3
    helal olsun Bartuc
  • 16-12-2008, 03:05:51
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    php5 kullanıyor isen ve SimpleXMLElement özelliği açık ise daha basit bir şekilde halledebilirsiniz.
  • 16-12-2008, 03:09:51
    #5
    teşekkürler güzen yöntem.
  • 16-12-2008, 03:12:19
    #6
    teşekkürler
  • 16-12-2008, 09:19:43
    #7
    Güzel bir yöntem, teşekkür ederim..
  • 26-11-2012, 18:34:59
    #8
    Şuan denedim bende çalışmıyor ?
  • 17-12-2012, 14:01:41
    #9
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Tesekkurler hocam