• 17-11-2021, 19:22:25
    #1
    Merhaba,

    Aşağıdaki kod ile bilgileri alıyor. Fakat benim istediğim misal sadece BALIKESIR geçenleri alsın gibi bi ek yapabilecek var mı bu koda?

    <?php
    $url = 'http://www.koeri.boun.edu.tr/scripts/lasteq.asp';
     
    $data = file_get_contents($url);
     
    $data = explode('<pre>',$data);
     
    $data = explode('</pre>',$data[1]);
    $data = $data[0];
    $data = trim($data);
     
    $data = explode(PHP_EOL,$data);
     
    $earthquakes = [];
     
    unset($data[0]);
    unset($data[1]);
    unset($data[2]);
    unset($data[3]);
    unset($data[4]);
    unset($data[5]);
    foreach($data AS $cont){
        $date = substr($cont,0,19);
        $latLong = substr($cont,21,17);
        $latLong = explode(' ',$latLong);
     
        $lat = trim($latLong[0]);
        $lon = trim($latLong[3]);
     
        $depth = substr($cont,44,8);
        $depth = trim($depth);
     
        $magnitude = substr($cont,55,13);
        $magnitude = explode(' ',$magnitude);
     
        $region = substr($cont,68,50);
        $region = trim($region);
     
        $earthquakes[] = [
            'date'         => $date,
            'lat'         => $lat,
            'lon'         => $lon,
            'depth'     => $depth,
            'magnitude' => [
                'MD' => $magnitude[0],
                'ML' => $magnitude[1],
                'Mw' => $magnitude[2]
            ],
            'region'     => $region
             
        ];
    }
     
    var_dump($earthquakes);
     
    die();
  • 18-11-2021, 00:10:21
    #3
    Kısaca fazla zaman ayırmadan şu şekilde bir kod yazdım, tamamen regex üstünden de gidilip explode aşamaları atlanabilir ama pek bir şey fark edeceğini sanmıyorum yüksek trafikli bir yerde kullanmayacak iseniz.
    <?php
    $url = 'http://www.koeri.boun.edu.tr/scripts/lasteq.asp';
    
    $data = explode("\n", file_get_contents($url));
    
    foreach($data as $line){
      if(strpos($line, "BALIKESIR")){
        $regex = '/(.*?) (.*?) (.*?) (.*?) (.*?) (.*?) (.*?) (.*) Quick/m';
        preg_match($regex, trim($line," "), $matches);
        var_dump($matches);
      }
    }
    ?>
  • 18-11-2021, 18:16:58
    #4
    ErkanCevik adlı üyeden alıntı: mesajı görüntüle
    Kısaca fazla zaman ayırmadan şu şekilde bir kod yazdım, tamamen regex üstünden de gidilip explode aşamaları atlanabilir ama pek bir şey fark edeceğini sanmıyorum yüksek trafikli bir yerde kullanmayacak iseniz.
    <?php
    $url = 'http://www.koeri.boun.edu.tr/scripts/lasteq.asp';
    
    $data = explode("\n", file_get_contents($url));
    
    foreach($data as $line){
      if(strpos($line, "BALIKESIR")){
        $regex = '/(.*?) (.*?) (.*?) (.*?) (.*?) (.*?) (.*?) (.*) Quick/m';
        preg_match($regex, trim($line," "), $matches);
        var_dump($matches);
      }
    }
    ?>
    hocam teşekkür ediyorum ilginiz alakanız için
  • 18-11-2021, 21:10:56
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    $region tanımlamasının hemen altına bunu da ekleyebilirsiniz.
    if (strpos($region, 'BALIKESIR') === false) continue;
    İyi çalışmalar.