İ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.