• 25-05-2022, 00:26:08
    #1
    Selamlar diyanetin API sini bulamadığım için curl le sayfayı çekeyim dedim incelediğim örnekte izlediğim yol undifined a düşmeyle sonuçlandı

    $url = "https://namazvakitleri.diyanet.gov.tr/tr-TR/9560/izmir-icin-namaz-vakti";
    
    
    function getData($url)
    {
    $oturum = curl_init($url);
    curl_setopt($oturum,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($oturum, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($oturum, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 OPR/73.0.3856.415");
    curl_setopt($oturum, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
    curl_setopt($oturum, CURLOPT_SSL_VERIFYHOST, 0);
        $cikti = curl_exec($oturum);
    
    curl_close($oturum);
    
       return str_replace(array("\r","\n","\t"), null, $cikti);
    }
    
    function dataSet($url){
    $dataList = getData($url);
    preg_match('#<div id="tab-0"></div>#',$dataList, $saatler);
    preg_match_all('#<div class="table-responsive"><table class="table vakit table"><caption></caption><thead><tr><th></th><th></th><th></th><th></th><th></th><th></th><th></th></thead><tbody><tr><td>(.*?)</td>#',$saatler[1],$saat);
    
    $gun = $saatler[1];
       return $gun;
    }
    echo dataSet($url);
    Undefined array key 1 in diyor. saatleri array olarak görmediğinden mi yoksa yapıda mı hata var anlamadığım için fikirlerinize açığım.
  • 25-05-2022, 00:31:17
    #2
    algoritmik adlı üyeden alıntı: mesajı görüntüle
    Selamlar diyanetin API sini bulamadığım için curl le sayfayı çekeyim dedim incelediğim örnekte izlediğim yol undifined a düşmeyle sonuçlandı

    $url = "https://namazvakitleri.diyanet.gov.tr/tr-TR/9560/izmir-icin-namaz-vakti";
    
    
    function getData($url)
    {
    $oturum = curl_init($url);
    curl_setopt($oturum,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($oturum, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($oturum, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 OPR/73.0.3856.415");
    curl_setopt($oturum, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
    curl_setopt($oturum, CURLOPT_SSL_VERIFYHOST, 0);
        $cikti = curl_exec($oturum);
    
    curl_close($oturum);
    
       return str_replace(array("\r","\n","\t"), null, $cikti);
    }
    
    function dataSet($url){
    $dataList = getData($url);
    preg_match('#<div id="tab-0"></div>#',$dataList, $saatler);
    preg_match_all('#<div class="table-responsive"><table class="table vakit table"><caption></caption><thead><tr><th></th><th></th><th></th><th></th><th></th><th></th><th></th></thead><tbody><tr><td>(.*?)</td>#',$saatler[1],$saat);
    
    $gun = $saatler[1];
       return $gun;
    }
    echo dataSet($url);
    Undefined array key 1 in diyor. saatleri array olarak görmediğinden mi yoksa yapıda mı hata var anlamadığım için fikirlerinize açığım.
    Regex konusunda çalışma yapmanız gerekiyor.
    preg_match kullanımı hatalı.


    Ekleme;

    preg_match('#<tbody>(.*?)<\/tbody>#',$dataList,$saatler);
    preg_match_all('#<td>(.*?)<\/td>#',$saatler[1],$saat);
    Kabataslak olarak yukardakini kullanabilirsin. Kullanımına göre geliştir ve REGEX çalış.
    Kolay Gelsin.
  • 25-05-2022, 00:47:43
    #3
    CoLLeR adlı üyeden alıntı: mesajı görüntüle
    Regex konusunda çalışma yapmanız gerekiyor.
    preg_match kullanımı hatalı.


    Ekleme;

    preg_match('#<tbody>(.*?)<\/tbody>#',$dataList,$saatler);
    preg_match_all('#<td>(.*?)<\/td>#',$saatler[1],$saat);
    Kabataslak olarak yukardakini kullanabilirsin. Kullanımına göre geliştir ve REGEX çalış.
    Kolay Gelsin.
    Teşekkürler hocam.
  • 25-05-2022, 03:12:02
    #4
    CoLLeR adlı üyeden alıntı: mesajı görüntüle
    Regex konusunda çalışma yapmanız gerekiyor.
    preg_match kullanımı hatalı.


    Ekleme;

    preg_match('#<tbody>(.*?)<\/tbody>#',$dataList,$saatler);
    preg_match_all('#<td>(.*?)<\/td>#',$saatler[1],$saat);
    Kabataslak olarak yukardakini kullanabilirsin. Kullanımına göre geliştir ve REGEX çalış.
    Kolay Gelsin.
    hocam burada td lerde bir class olmadığından ayrı ayrı datayı almak mümkün değil sanırım. Array halinde de döndüm. Verileri çekebiliyorum fakat finalde stringe yakalanıyorum liste halinde bunu parçalayacak ayırt edici bir ayraç da yok. Bu regexin alternatifi var mıdır ona baksam?

  • 25-05-2022, 03:27:07
    #5
    algoritmik adlı üyeden alıntı: mesajı görüntüle
    hocam burada td lerde bir class olmadığından ayrı ayrı datayı almak mümkün değil sanırım. Array halinde de döndüm. Verileri çekebiliyorum fakat finalde stringe yakalanıyorum liste halinde bunu parçalayacak ayırt edici bir ayraç da yok. Bu regexin alternatifi var mıdır ona baksam?

    Array olarak gelir ama sayı sabit olduğu için array olarak kullanabilirsin.
    $sonuc[0]
    $sonuc[1]
    ....
    $sonuc[9]

    gibi.
    Kullanacağın yeri bilmediğim için kendine kullanımına uygun üretimler yapabilirsin.
    mesela her satırda 6 değer var for döngüsüne alarak ($i%5==1) ise sadece imsakları yazdırabilir veya yeni bir array oluşturabilirsin. Aynı şekilde if($i%5==2) Güneş değerlerini alabilirsin.
    Gibi gibi.
    Dediğim gibi kullanacağın yerer göre kendi projeni üretmelisin.
    Kolay gelsin umarım anlatabilmişimdir.