loadHTML($html); libxml_clear_errors(); $xpath = new DOMXPath($dom); // لیستی که دنبالش میگردیم $targets = [ 'دلار آمریکا' => 'usd', 'یورو' => 'euro', 'پوند انگلیس' => 'gbp', 'درهم امارات' => 'aed', 'سکه امامی' => 'coin_emami', 'سکه بهار آزادی' => 'coin_bahar', 'نیم سکه' => 'coin_half', 'ربع سکه' => 'coin_quarter', 'سکه گرمی' => 'coin_gram', 'طلای 18 عیار' => 'gold_18', 'مثقال طلا' => 'mesghal' ]; $results = []; // استراتژی: پیدا کردن تمام ردیفهای جدول (tr) $rows = $xpath->query('//tr'); foreach ($rows as $row) { // گرفتن ستونها (td) $cols = $xpath->query('.//td', $row); if ($cols->length > 1) { // ستون اول معمولا اسمه، ستون دوم یا سوم قیمته $nameRaw = trim($cols->item(0)->textContent); // نام ارز $priceRaw = trim($cols->item(1)->textContent); // قیمت (معمولا ستون دوم) (در برخی جداول ستون سوم است) // اگر قیمت خالی بود یا عدد نبود، ستون بعدی رو چک کن (چون ساختار جدولای ایران جیب متغیره) if (!preg_match('/[0-9]/', $priceRaw) && $cols->length > 2) { $priceRaw = trim($cols->item(2)->textContent); } // تمیزکاری نام (حذف پرانتز و ...) foreach ($targets as $searchName => $key) { // اگر اسم پیدا شده شامل کلمه مورد نظر ما بود if (strpos($nameRaw, $searchName) !== false) { // قیمت رو تمیز کنیم (فقط اعداد) $priceClean = preg_replace('/[^0-9]/', '', $priceRaw); if (!empty($priceClean)) { $results[] = [ 'key' => $key, 'name' => $searchName, 'full_name' => $nameRaw, 'price' => number_format($priceClean) ]; } // وقتی پیدا شد دیگه بقیه اسامی رو چک نکن برای این ردیف break; } } } } return $results; } // ========================================================= // منطق اصلی // ========================================================= $data = []; $source = ''; // 1. اول کش رو چک کن if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < $cacheTime)) { $data = json_decode(file_get_contents($cacheFile), true); $source = 'دادههای ذخیره شده (Cache)'; } else { // 2. اسکرپ کن $scraped = scrapeIranJib($targetUrl); if ($scraped && count($scraped) > 0) { $data = $scraped; file_put_contents($cacheFile, json_encode($data)); $source = 'دریافت مستقیم از ایرانجیب'; } elseif (file_exists($cacheFile)) { // اگر نتونست بخونه ولی کش قدیمی هست $data = json_decode(file_get_contents($cacheFile), true); $source = 'خطا در دریافت (نمایش آرشیو)'; } } ?>
منبع دادهها: وبسایت ایرانجیب
سایت ایرانجیب در حال حاضر پاسخ نمیدهد یا ساختار آن تغییر کرده است.