• 28-03-2020, 17:12:12
    #1
    Merhaba arkadaşlar.
    Curl ile radyo bilgilerini çekmeye kalktığım zaman bir türlü istediğim sonucu vermiyor.
    Siteye düz url.com/x.html şeklinde sabit url'sinden girdiğim zaman (curl ile veri çekeceğim yer) ekran üzerinde
    6,1,30,4096,5,64,Sezen Aksu - Belalım
    şeklinde html olarak (kaynağı görüntüle yaptığım zamanda da bu kodlara benzer kodlar var.)
    <HTML><meta http-equiv="Pragma" content="no-cache"></head><body>6,1,30,4096,5,64,Sezen Aksu - Belalım</body></html>
    çıkıyor.
    Bunu curl ile çekmeye kalktığımda
    <?
    $ch = curl_init();
    $url = 'http://ip:port/7.html';
    
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    $output = curl_exec($ch);
    $info = curl_getinfo($ch);
    print_r ($info);
    ?>
    Şeklinde kodları görmek istediğim zaman bana saçma sapan şeyler çıkarıyor.
    [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result]
    gibi kodlar...

    Aşağıdaki kodlarla fsockopen kullanarak veri çekilebiliyor fakat hostingte fsockopen kapalı olduğu için mecburi curl kullanmam gerekiyor. Bu konuda bana yardımcı olabilir misiniz?

    $info = str_replace('</body></html>', "", $info);
    $split = explode(',', $info);
    if (empty($split[6]) )
    {
    echo "The current song is not available"; // Displays when sever is online but no song title
    }
    else
    {
    $title = str_replace('\'', '`', $split[6]);
    $title = str_replace(',', ' ', $title);
    echo "$title"; // Displays song
    }
  • 28-03-2020, 17:18:50
    #2
    hocam selamlar,
    siteyi bilmediğim için inceleyemedim tabii, fakat çok büyük ihtimalle sizin çekmek istediğiniz data, js ile sonradan dom'a ekleniyor. dolayısı ile curl kullanmak işinize yaramayacaktır. bu tarz durumlarda PhantomJS kütüphanesini kullanmanızı öneririm. zaten çok basit, linkteki "installation" ve "basic usage" adımlarını tamamlayıp test edebilirsiniz. sağlıklı günler dilerim
    dökümantasyon: http://jonnnnyw.github.io/php-phantomjs/
  • 28-03-2020, 17:19:48
    #3
    returntransfer true header false yapın
  • 28-03-2020, 17:27:22
    #4
    @Batuhn; cevabınız için teşekkür ederim fakat o bilmediğim bir konu ve biraz curl bilgim var ondan yürümek istiyorum.
    @YuqseLX; sizin verdiğiniz kodda olmadı. bende buna istinaden curl kodunu değiştirdim biraz farklılık yapayım dedim. Bu sefer boş sayfa geliyor. Bildiğiniz test edebileceğim bir kod var mı? Ekranda ne varsa bunu print_r ile yazabilecek bir curl kodu.

    <?php
    
    $curl=curl_init();//curl başlat
    curl_setopt($curl,CURLOPT_URL,"http://ip:port/x.html");//gidilecek url tanımlanıyor
    curl_setopt($curl,CURLOPT_VERBOSE,1);//hata ayıklam tanımlandı
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//çıktı işlevini curl_exec() olacak
    $gelenveri=curl_exec($curl) or die(curl_error());//curl çalışıtı hata varsa die çalışacak
    curl_close($curl);//curl işlemi bitiriliyor.
    echo $gelenveri;//gelen deger ekrana basılıyor.
    echo curl_error($curl);//hata varsa ekrana yazdırıyoruz.
    ?>
  • 28-03-2020, 19:29:47
    #5
    aralarında virgül olanları ayırmak için explode kullanabilirsin. hepsini 1bütün olarak çektikten sonra explode kullan

            $bolid=$bolunecek;
            $result=explode(',', $bolid);
            $1=$result[0];
            $2=$result[1];
    
    
    //kaç tane varsa senin istediğin sanırım $result[6];