• 19-08-2020, 12:43:14
    #1
    PHP ile başka siteden içerik çekerken file_get_content() methodunu kullanıyoruz.
    Örnek kullanım:
    $site = file_get_contents('site_linki');
    Bu şekilde tüm sayfayı çekebilirsiniz ancak büyük ihtimalle bütün sayfayı çekmek değil, sayfadaki belli bir kısmını çekmek isteyeceksiniz. Bu yüzden gelen içeği explode() methoduyla parçalayıp bir diziye atıcaz ve buradan istediğimiz bölümü okutucaz.
    Örneğin çektiğiniz sayfanın içeriğindeki “<div id=”alakasız sayılar”>” bölümlerini çekmek istediğinizi ve 10 tane div bölümü olduğunu varsayalım.
    [PHPR]$array = explode("<div", $site); // burada içeriği $array dizesine atadıkÖncelikle elimizdeki verileri görmek için dizimizin adımlarını okutalım:
    echo "<pre>";
    echo print_r($array);
    echo "</pre>";[/PHPR
    ]Eğer istediğiniz gibi bölünmediyse explode() methodundaki böldürdüğünüz yazının sayfanın kaynak koduna yansıdığından emin olun. Örneğin ajax ile işlem yaptırıldığında döndürülen sonuç kaynak koda yansımadığı için bu tarz içerikleri çekerken file_get_content() methodu işe yaramamakta. Eğer istediğiniz değerlere bölebildiyseniz aşağıdaki adımlardan devam edebilirsiniz.
    Şimdi bu dizilerdeki istemediğimiz bölümler varsa çıkartalım. Bunun içinde dizimizi döngüye alıp her bir indis için str_replace() ya da preg_replace() fonksiyonlarını kullanalım.

    for ($i=1; $i <10; $i++) { // dizimizde 10 verimizin olduğunu varsaydığımız için sınırı 10 belirledim
    if(!$array[$i]){ // bu şartlandırma dizinin sınırları bilinmediğinde kullandığım bir şart, olabilme ihtimali en yüksek olandan daha büyük sınır girip boş değer döndüğünde döngüyü sonlandırıyorum, dizinin veri sayısını biliyorsanız burayı silebilirsiniz
    break;
    }
    $vid = substr($array[$i], 5,3); // div id'mizin rastgele sayılardan oluştuğunu varsaymıştık, eğer böyle bir durumla karşı karşıyaysanız substr(dizi_adi, kaçıncı_karakterden_itibaren_sayacağı, kaç_karakter_sayacağı) şeklinde kullanıp id'ye geldiğiniz yerden itibaren id'nin karakter sayısı kadar saydırarak id'yi çekebilirsiniz.
    $a = str_replace("kaldirilcak_icerik", "", $array[$i]); // burada kaldırılmasını istediğiniz içeriği seçip kaldırdıkecho trim($a); // çıktımızdaki boşlukları sildirip okuduk (boşlukları sildirmek istemiyorsanız trim() methodunu kaldırabilirsiniz)
    } //döngüyü sonlandırdık
    İşlemler bu kadardı. Umarım işinize yaramıştır

    Kaynak: PHP ile Başka Siteden İçerik Çekme


    Bir sonraki konu başlığım: PHP için önemli 5 fonksiyon
    İçeriği: str_replace, preg_replace, substr, explode, trim
  • 19-08-2020, 12:49:28
    #2
    Curl ile çekip preg match all yapmak daha iyi
  • 19-08-2020, 12:49:52
    #3
    Elinize sağlık teşekkürler.
  • 19-08-2020, 12:51:45
    #4
    GianC adlı üyeden alıntı: mesajı görüntüle
    Curl ile çekip preg match all yapmak daha iyi
    Curl methodundan da ileriki yazılarımda bahsedicem hocam, ancak curl ile bazı sitelerden veri çekmek gerçekten çok zorlayıcı oluyor, file get content te de bu durum geçerlimi bilmiyorum ama daha denk gelmedim. sitede, siteyi kurduktan sonra tecrübe ettiğim şeyleri işim bitince paylaşıyorum. Daha çok tecrübe paylaşımı gibi oradaki kodlar da projemdeki kodların konu için özelleştirilmiş hali
    Curl kullandığım zaman bundan da bahsederim elbette
  • 19-08-2020, 12:52:28
    #5
    Caxing adlı üyeden alıntı: mesajı görüntüle
    Elinize sağlık teşekkürler.
    Ben teşekkür ederim hocam, umarım işinize yarar
  • 19-08-2020, 12:59:20
    #6
    Üyeliği durduruldu
    Yararlı bir konu olmuş. PHP'de iş gören bir teknik bu.
  • 19-08-2020, 13:02:10
    #7
    otukenwebtr adlı üyeden alıntı: mesajı görüntüle
    Yararlı bir konu olmuş. PHP'de iş gören bir teknik bu.
    yorumunuz için teşekkür ederim