format('Y-m-d H:i:s'); // Döviz kurları $response = $this->fetchData('https://kur.doviz.com'); // DOM işlemleri için veri çekme $dom = new \DOMDocument(); @$dom->loadHTML($response->body()); $xpath = new \DOMXPath($dom); // Döviz kurlarını çekme $elements = $xpath->query("//*[@data-socket-key]"); foreach ($elements as $element) { $name = $element->getAttribute('data-socket-key'); $type = $element->getAttribute('data-socket-attr'); $value = NumberFormatter::commaToDot($element->nodeValue); if (trim($name) !== '') { if ($name == "JPY") $value = $value / 100; if (strlen($name) === 3) { // Para birimi ismini bul $nameElement = $xpath->query(".//div[@class='cname']", $element->parentNode); if ($nameElement->length > 0) { $data[$name]['Name'] = trim($nameElement->item(0)->nodeValue); } if ($type == "bid") $data[$name]['Buying'] = (float)$value; if ($type == "ask") $data[$name]['Selling'] = (float)$value; if ($type == "c") $data[$name]['Change'] = round((float)$value, 2); $data[$name]['Type'] = "Currency"; } } } // AZN kuru için $aznResponse = $this->fetchData('https://wise.com/tr/currency-converter/azn-to-try-rate?amount=1'); preg_match('/(\d+\.\d+)\s+TRY/', $aznResponse->body(), $matches); if (isset($matches[1])) { $data['AZN'] = [ 'Buying' => NumberFormatter::commaToDot($matches[1]), 'Selling' => NumberFormatter::commaToDot($matches[1]), 'Change' => "0.00", 'Type' => "Currency" ]; } // JSON dosyasını kaydet Storage::put('currency/today.json', json_encode($data, JSON_UNESCAPED_UNICODE)); return $data; } private function fetchData($url) { return Http::withHeaders([ 'User-Agent' => 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10', 'Accept-Language' => 'en' ])->get($url); } }