نحوه دریافت نرخ ارز رسمی برای یک تاریخ معین در PHP. اسکریپت PHP برای دانلود نرخ مبادله Php دریافت نرخ ارز
بسیاری از شما بارها دیده اید که برخی از سایت ها نمایش داده می شوند نرخ ارز. البته خود مدیران این سایت ها روزانه تغییر نمی دهند (امیدوارم). از سایت بانک مرکزی دانلود می کنند. و در این مقاله کد را خواهم داد اسکریپت پی اچ پی برای دانلود نرخ ارز از سایت بانک مرکزیو نمایش آنها در صفحه
در اینجا کد اسکریپت فوراً آمده است:
$date = date("d/m/Y"); // تاریخ امروز در قالب مورد نیاز
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; // پیوند به فایل XML با نرخ مبادله
$content = file_get_contents($link); // دانلود محتوای صفحه
$dom = new domDocument("1.0", "cp1251"); // DOM ایجاد کنید
$dom->loadXML($content); // یک سند XML را در DOM بارگیری کنید
$root = $dom->documentElement; // عنصر ریشه را بگیرید
$childs = $root->childNodes; // لیستی از عناصر فرزند را دریافت کنید
$data = array(); // مجموعه داده
برای ($i = 0؛ $i< $childs->طول؛ $i++) (
$childs_new = $childs->item($i)->childNodes; // گره های فرزند را بگیرید
برای ($j = 0؛ $j< $childs_new->طول؛ $j++) (
/* ما به دنبال ارزهای مورد علاقه خود هستیم */
$el = $childs_new->item($j);
$code = $el->nodeValue;
if (($code == "USD") || ($code == "EUR")) $data = $childs_new; // ارزهای مورد نیاز را به آرایه اضافه کنید
}
}
/* تکرار از طریق یک آرایه با داده های مربوط به ارزها */
برای ($i = 0؛ $i< count($data); $i++) {
$list = $data[$i];
برای ($j = 0؛ $j< $list->طول؛ $j++) (
$el = $list->item($j);
/* نمایش نرخ ارز */
if ($el->nodeName == "Name") echo $el->nodeValue." - ";
elseif ($el->nodeName == "Value") echo $el->nodeValue." روبل
";
}
}
?>
من سعی کردم کد را به طور کامل نظر بدهم، بنابراین در درک آن مشکلی وجود ندارد. همچنین، برای اینکه بفهمید چرا اینقدر زیاد است و دقیقاً چرا چنین چرخههایی وجود دارد، و همچنین شرایط خاصی از کجا میآیند، اکیداً توصیه میکنم از پیوند کد بازدید کنید (فقط تاریخ را وارد کنید). سپس خواهید دید سند XML، و درک اینکه چرا این کد خاص نوشته شده است برای شما بسیار ساده تر خواهد بود.
اسکریپت های زیادی در اینترنت وجود دارد که نرخ ارز را نشان می دهد. اما من به نرخ دلار و یورو نیاز داشتم بانک مرکزی. تصمیم گرفتم به دنبال اسکریپت هایی بگردم که نشان دهند دوره های رسمیارز برای یک تاریخ معین. به مقاله جالبی در مورد مرتب سازی جدول jQuery برخوردم. آنجا در فیلمنامه" تجزیه کننده نرخ ارز پی اچ پی"یک سند xml با استفاده از عبارات منظم سرقت می شود. عبارات منظم به طور فعال در سرقت کد استفاده می شوند. اسکریپت عالی کار می کند، اما ویژگی های خاص خود را دارد. جدولی را در HTML با تعداد زیادی ارز نمایش می دهد. من نیاز دارم. یک آرایه JSON از یک جدول با نرخ مبادله ایجاد کنید. این آرایه مانند سوسیس است. این چیزی است که برنامه نویسان به چنین آرایه ای می گویند. سوسیس های بسیار بزرگی در آن وجود دارد مقادیر زیاد)))
/* * getArr() * نرخ ارز از بانک مرکزی * تجزیه سند xml * */ تابع getArr() ($url = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=". date("d/m/Y"، strtotime("+0 day") $cbr_xml = str_replace(array("\n","\r","\t")،"","getContentPage($url) ) if(preg_match_all("~ (.*?) ~i",$cbr_xml,$Valute)) ( foreach($Valute as $data) ( preg_match("~ (.*?) ~i",$data ,$CharCode("~ (.*?) ~i",$data,$NumCode]["num_code"].= $NumCode; $arr[$CharCode]["nominal"] = $preg_match("~ (.*?) ~i",$data,$Name].=; toUtf8($preg_match("~ (.*)"$i++) تابع getContentPage($c) url_setopt($c, CURLOPT_RETURNTRANSFER, 1) curl_setopt ($c, CURLOPT_FOLLOWLOCATION, 1 $text = curl_close($c); $str) (بازگرداندن mb_convert_encoding($str، "utf-8"، "windows-1251"); ) $arr = getArr(); echo json_encode($arr); /* ( "EUR":("num_code":"978"، "Nominal":"1"، "name":"\u0415\u0432\u0440\u043e، "value":"63.6090")، "USD ":("num_code":"840"، "nominal":"1"، "name":"\u0414\u043e\u043b\u043b\u0430\u0440 \u0421\u0428\u0410، "مقدار": "58.03 ") )*/
شما می توانید هم نرخ ارز امروز و هم نرخ ارز دیروز را مشاهده کنید. تابع strtotime ("+0 روز") به شما امکان می دهد زمان را تغییر دهید. البته هر چقدر هم که صفر اضافه کنید، مقدار متغیر تغییر نخواهد کرد. من این قسمت از کد را گذاشتم تا زمان هر لحظه قابل تغییر باشد. مجبور شدم آرایه را کمی دوباره انجام دهم. من از متغیر $CharCode به عنوان کلید آرایه استفاده کردم. در آرایه بزرگ من بسیاری از آرایه های دیگر وجود دارد و شما می توانید به یک آرایه خاص فقط با کلید (EUR) دسترسی داشته باشید. در مورد من، متغیر $CharCode مقادیر زیر را می گیرد:
- AUD => دلار استرالیا
- AZN => منات آذربایجان
- پوند => پوند انگلیس
- AMD => درام ارمنی
- BYR => روبل بلاروس
- BGN => Lev بلغارستان
- BRL => رئال برزیل
- HUF => فورینت مجارستان
- DKK => کرون دانمارک
- USD => دلار آمریکا
- یورو => یورو
- INR => روپیه هند
- KZT => تنگه قزاقستان
- CAD => دلار کانادا
- KGS => قرقیزستان سوم
- CNY => یوان چین
- MDL => لی مولداوی
- NOK => کرون نروژ
- PLN => زلوتی لهستانی
- RON => رومانیایی جدید Leu
- XDR => SDR (حقوق برداشت ویژه)
- SGD => دلار سنگاپور
- TJS => سامانی تاجیکستانی
- TRY => لیر ترکیه
- TMT => منات ترکمنی جدید
- UZS => سوم ازبک
- UAH => گریونا اوکراین
- CZK => تاج چک
- SEK => کرون سوئد
- CHF => فرانک سوئیس
- ZAR => راند آفریقای جنوبی
- KRW => جمهوری کره وون
- JPY => ین ژاپن
من فقط به دلار و یورو علاقه دارم. ازش پاک نکردم
ظهر بخیر دوستان عزیز همانطور که می دانید، اخیرا (11 فوریه) کاهش ارزش دیگری در قزاقستان داشتیم، این "سه شنبه سیاه"، همانطور که بسیاری در اینترنت آن را نامیده اند، به جیب بسیاری ضربه زد. من مقاله منفی دیگری در مورد این موضوع نمی نویسم. من فکر نمی کنم این لازم باشد. آنچه انجام شده انجام شده است. اما در آن روز بد من از این واقعیت که در هیچ کجای اینترنت نمی توان نرخ دقیق مبادله دلار، یورو یا موارد دیگر را فهمید، بسیار عصبانی شدم. ارز خارجی. همه سایت های شناخته شده و ناشناخته (سلام گوگل) برای من قابل دسترسی نبودند. شاید برخی از سایت ها مورد توجه کاربران قزاقستانی قرار نگرفتند و برای چنین بار کاربران آماده نبودند. اما واقعیت این است که سایت ها کار نمی کنند.
و در غروب، زمانی که شور و شوق من در مورد کاهش ارزش کاهش یافت و اعصابم شروع به بازگشت به حالت آرام خود کرد، تصمیم گرفتم که برای وبلاگ کوچک دنج خود یک گزارشگر کوچک نرخ ارز برای خودم بنویسم. همانطور که در بالا گفتم، من نمی خواستم از ابزارک های سایت های دیگر استفاده کنم، زیرا این سایت ها زمانی که کل دولت می خواستند این نرخ ارز لعنتی را بدانند "دروغ می گفتند". :) زیر اسکریپت اطلاع رسانی در PHP است، فکر می کنم اسکریپت نیازی به نظر ندارد:
$amount = "1";
$from = "USD";
$from = "یورو";
$from = "RUB";
$to= "KZT";
$i=0;
در حالی که ($i<= 2){
$i++;
$get = انفجار(" ",$get);
$get = انفجار("",$get);
";
}
?>
اسکریپت جهانی است، می توانید متغیر را تغییر دهید $ بهبه ارز دیگری که می خواهید به آن تبدیل کنید و همچنین آرایه ها را افزایش یا تغییر دهید $از[?]، ارزهای دیگر را اضافه کنید، فقط به یاد داشته باشید که اگر تعداد ارزهای خروجی را افزایش داده اید، شرایط حلقه را تغییر دهید. می توانید شناسه (نام) ارزها را با استفاده از پیوند دریافت کنید - https://www.google.com/finance/converter. همانطور که احتمالا متوجه شده اید، اسکریپت این صفحه گوگل را در یک حلقه تجزیه می کند و اطلاعات مورد نیاز خود را می گیرد.
چگونه این اسکریپت را در وب سایت خود نصب کنیم؟ اگر موتور وردپرس دارید، باید افزونه را نصب کنید. ویجت کد پی اچ پی" و این ویجت را انتخاب کنید و همه کدها را در آنجا اضافه کنید. این ساده ترین راه است. اگر مشکلی پیش آمد، همیشه می توانید افزونه را غیرفعال کنید و همه چیز به حالت قبل برمی گردد. من گزینه های پیچیده ای برای نصب اسکریپت ارائه نمی دهم. شما می توانید از طریق ایمیل برای من بنویسید، و من سعی خواهم کرد به شما کمک کنم، امیدوارم این مقاله برای شما مفید بوده باشد.
P.S: برای خودم اسکریپت را کمی بهینه کردم (caching اضافه کردم) و به cron وظیفه دادم که اسکریپت را هر ساعت یک بار آپدیت کند.
// بافر خروجی را شروع کنید
ob_start();$amount = "1";
$from = "USD";
$from = "یورو";
$from = "RUB";
$to= "KZT";
$i=0;
در حالی که ($i<= 2){
$i++;
$get = file_get_contents("https://www.google.com/finance/converter?a=$amount&from=$from[$i]&to=$to");
$get = انفجار(" ",$get);
$get = انفجار("",$get);
$converted_amount = preg_replace("/[^0-9\.]/", null، $get);
$converted_amount = دور ($converted_amount,2);
echo $amount." ".$from[$i]." = ".$converted_amount." ".$to."
";
}// ذخیره خروجی گرفته شده در فایل html
file_put_contents("currency.html", ob_get_contents());
// پایان بافر و نمایش صفحه
ob_end_flush();
?>
اسکریپت را با فرمت *.php ذخیره کنید، توصیه می شود آن را در یک پوشه جداگانه ذخیره کنید (به عنوان مثال، در پوشه "اسکریپت ها"، تا سایت را شلوغ نکنید. پس از آن، باید یک کار را در پوشه اضافه کنید. تاج، یک بار n ساعت به اسکریپت دسترسی پیدا کنید و یک بار از طریق مرورگر به اسکریپت دسترسی پیدا کنید تا یک فایل html ایجاد کند که بعداً می توانید اسکریپت را از طریق یک iframe نمایش دهید.
‹اسکریپت›
تابع show_temp()
{
$.ajax((
آدرس اینترنتی: "http://yoursite/scripts/currency.html"،
حافظه پنهان: نادرست،
موفقیت: function(html)(
$("#currency").html(html);
}
});
}
$(document).ready(function())(
show_temp();
});
این روش خروجی به شما امکان می دهد اندازه فونت، رنگ فونت را تغییر دهید یا هر افکت دیگری را از طریق CSS (Cascading Style Sheet) اضافه کنید.
نسخه بهینهسازی شده اسکریپت سرور را بارگیری نمیکند و میتوانید بهصورت متفاوتی از حافظه پنهان استفاده کنید، تا از cron استفاده نکنید موها :)
آیا ماشین لباسشویی شما خراب است؟ 1v.kz کمک خواهد کرد! - تعمیر ماشین لباسشویی در آلماتی:
متخصصین از تمام نقاط شهر
در برخی موارد، هنگام کار با تجارت، نیاز به به دست آوردن اطلاعات به روز در مورد نرخ تبدیل یک ارز خاص وجود دارد. بانک مرکزی بهترین منبع چنین دادههایی است و با توجه به اینکه اطلاعات باز و بهروزرسانی شده نرخ ارز را در قالب XML ارائه میکند، استفاده نکردن از آن گناه است.
این تابع به شکل زیر است:
تابع get_currency ($currency_code، $format) ($date = date("d/m/Y"); // تاریخ فعلی $cache_time_out = "3600"؛ // طول عمر حافظه پنهان در ثانیه $file_currency_cache = __DIR__."/XML_daily . asp"؛ if(!is_file($file_currency_cache) || filemtime($file_currency_cache)< (time() - $cache_time_out)) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $out = curl_exec($ch); curl_close($ch); file_put_contents($file_currency_cache, $out); } $content_currency = simplexml_load_file($file_currency_cache); return number_format(str_replace(",", ".", $content_currency->xpath("Valute")->Value)، $format); )
این شامل خطوط است:
$date = date("d/m/Y"); // تاریخ فعلی $cache_time_out = "3600"; // طول عمر کش بر حسب ثانیه
به ترتیب مسئول تاریخ (در مورد ما فعلی است) و طول عمر حافظه پنهان هستند. از آنجایی که بانک مرکزی اغلب اطلاعات مربوط به ارزها را به روز نمی کند، نباید هر بار که از آنها استفاده می کنید فقط آن را آزار دهید. می توانید مقادیر موجود در این خطوط را (در صورت تمایل) به خود تغییر دهید.
کاربرد تابع به شرح زیر است:
Echo get_currency("USD", 3);
اینجا" USD"کد نمادین واحد پول است (در مورد ما دلار آمریکا است) و " 3 » – تعداد ارقام اعشار.
لیست قابل قبول ارزهای ارائه شده توسط بانک مرکزی فدراسیون روسیه (در زمان نگارش) به شکل "کد نماد ارز - نام و نام":
AUD – 1 دلار استرالیا AZN – 1 منات آذربایجان GBP – 1 پوند انگلستان AMD – 100 درام ارمنستان BYN – 1 روبل بلاروس BGN – 1 لو بلغارستان BRL – 1 HUF واقعی برزیل – 100 فورینت مجارستان HKD – 10 دلار هنگ کنگ 10 دلار DKK کرون USD – 1 دلار آمریکا یورو – 1 یورو INR – 100 روپیه هند KZT – 100 تنگه قزاقستان CAD – 1 دلار کانادا KGS – 100 سوم قرقیزستان CNY – 10 یوان چین MDL – 10 لی مولداوی NOK – 10 کرون نروژ – PLtyN لهستان RON – 1 لئو رومانیایی XDR – 1 SDR (حقوق برداشت ویژه) SGD – 1 دلار سنگاپور TJS – 10 سامانی تاجیکستان TRY – 1 لیره ترکیه TMT – 1 منات ترکمن جدید UZS – 10000 سوم ازبکستان UAH – 10 گریونا اوکراین CZK – 10 SEK - 10 کرون سوئد CHF - 1 فرانک سوئیس ZAR - 10 راند آفریقای جنوبی KRW - 1000 وون کره
امیدوارم این ویژگی جایگاه خود را در پروژه شما پیدا کند. اگر سؤالی دارید یا چیزی مبهم به نظر می رسد، حتماً در نظرات زیر این مقاله در مورد آن بنویسید.
در برخی موارد، هنگام کار با تجارت، نیاز به به دست آوردن اطلاعات به روز در مورد نرخ تبدیل یک ارز خاص وجود دارد. بانک مرکزی بهترین منبع چنین دادههایی است و با توجه به اینکه اطلاعات باز و بهروزرسانی شده نرخ ارز را در قالب XML ارائه میکند، استفاده نکردن از آن گناه است.
این تابع به شکل زیر است:
تابع get_currency ($currency_code، $format) ($date = date("d/m/Y"); // تاریخ فعلی $cache_time_out = "3600"؛ // طول عمر حافظه پنهان در ثانیه $file_currency_cache = __DIR__."/XML_daily . asp"؛ if(!is_file($file_currency_cache) || filemtime($file_currency_cache)< (time() - $cache_time_out)) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $out = curl_exec($ch); curl_close($ch); file_put_contents($file_currency_cache, $out); } $content_currency = simplexml_load_file($file_currency_cache); return number_format(str_replace(",", ".", $content_currency->xpath("Valute")->Value)، $format); )
این شامل خطوط است:
$date = date("d/m/Y"); // تاریخ فعلی $cache_time_out = "3600"; // طول عمر کش بر حسب ثانیه
به ترتیب مسئول تاریخ (در مورد ما فعلی است) و طول عمر حافظه پنهان هستند. از آنجایی که بانک مرکزی اغلب اطلاعات مربوط به ارزها را به روز نمی کند، نباید هر بار که از آنها استفاده می کنید فقط آن را آزار دهید. می توانید مقادیر موجود در این خطوط را (در صورت تمایل) به خود تغییر دهید.
کاربرد تابع به شرح زیر است:
Echo get_currency("USD", 3);
اینجا" USD"کد نمادین واحد پول است (در مورد ما دلار آمریکا است) و " 3 » – تعداد ارقام اعشار.
لیست قابل قبول ارزهای ارائه شده توسط بانک مرکزی فدراسیون روسیه (در زمان نگارش) به شکل "کد نماد ارز - نام و نام":
AUD – 1 دلار استرالیا AZN – 1 منات آذربایجان GBP – 1 پوند انگلستان AMD – 100 درام ارمنستان BYN – 1 روبل بلاروس BGN – 1 لو بلغارستان BRL – 1 HUF واقعی برزیل – 100 فورینت مجارستان HKD – 10 دلار هنگ کنگ 10 دلار DKK کرون USD – 1 دلار آمریکا یورو – 1 یورو INR – 100 روپیه هند KZT – 100 تنگه قزاقستان CAD – 1 دلار کانادا KGS – 100 سوم قرقیزستان CNY – 10 یوان چین MDL – 10 لی مولداوی NOK – 10 کرون نروژ – PLtyN لهستان RON – 1 لئو رومانیایی XDR – 1 SDR (حقوق برداشت ویژه) SGD – 1 دلار سنگاپور TJS – 10 سامانی تاجیکستان TRY – 1 لیره ترکیه TMT – 1 منات ترکمن جدید UZS – 10000 سوم ازبکستان UAH – 10 گریونا اوکراین CZK – 10 SEK - 10 کرون سوئد CHF - 1 فرانک سوئیس ZAR - 10 راند آفریقای جنوبی KRW - 1000 وون کره
امیدوارم این ویژگی جایگاه خود را در پروژه شما پیدا کند. اگر سؤالی دارید یا چیزی مبهم به نظر می رسد، حتماً در نظرات زیر این مقاله در مورد آن بنویسید.