Php الحصول على سعر الصرف. كيفية الحصول على أسعار الصرف الرسمية لتاريخ معين في PHP

في بعض الحالات، عند العمل في مجال التجارة، يصبح من الضروري الحصول على معلومات محدثة حول سعر صرف عملة معينة. ويعد البنك المركزي أفضل مصدر لهذه البيانات، ونظرا لأنه يوفر معلومات مفتوحة وفي الوقت المناسب عن سعر الصرف بتنسيق 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("القيمة")->القيمة),$format); )

ويحتوي على السطور:

$date = date("d/m/Y"); // التاريخ الحالي $cache_time_out = "3600"; // عمر ذاكرة التخزين المؤقت بالثواني

هم المسؤولون عن التاريخ (في حالتنا، هو التاريخ الحالي) وعمر ذاكرة التخزين المؤقت، على التوالي. نظرًا لأن البنك المركزي لا يقوم بتحديث بيانات العملة كثيرًا، فلا يجب أن تزعجه بهذه الطريقة في كل مرة تستخدمها. يمكنك تغيير القيم الموجودة في هذه السطور (اختياريًا) إلى قيمك الخاصة.

استخدام الدالة هو كما يلي:

صدى get_currency("USD"، 3);

هنا " دولار أمريكي" هو رمز عملة رمزي (في حالتنا، هو الدولار الأمريكي)، و" 3 " - عدد من الرموز بعد الفاصلة.

قائمة العملات المقبولة المقدمة من البنك المركزي للاتحاد الروسي (في وقت كتابة هذا التقرير) في شكل "رمز العملة - الفئة والاسم":

AUD - 1 دولار أسترالي AZN - 1 مانات أذربيجاني GBP - 1 جنيه إسترليني AMD - 100 درام أرميني BYN - 1 روبل بيلاروسي BGN - 1 ليف بلغاري BRL - 1 ريال برازيلي HUF - 100 HUF HKD - 10 دولارات هونج كونج DKK - 10 دنماركية كرونة دولار أمريكي - 1 دولار أمريكي EUR - 1 يورو INR - 100 روبية هندية KZT - 100 تنغي كازاخستان CAD - 1 دولار كندي KGS - 100 سوم قيرغيزستان CNY - 10 يوان صيني MDL - 10 MDL NOK - 10 كرونة نرويجية PLN - 1 PLN RON بولندي - 1 ليو روماني XDR - 1 حقوق السحب الخاصة (حقوق السحب الخاصة) SGD - 1 دولار سنغافوري TJS - 10 سوموني طاجيكي ليرة تركية - 1 ليرة تركية TMT - 1 مانات تركمان جديد UZS - 10,000 سوم أوزبكي UAH - 10 هريفنيا أوكرانية CZK - 10 كرونة تشيكية - 10 كرونة سويسرية - 1 فرنك سويسري ZAR - 10 راند جنوب أفريقي وون كوري - 1,000 وون جمهورية كوريا

آمل أن تجد الوظيفة مكانها في مشروعك. إذا كانت لديك أي أسئلة أو بدا لك شيء غير مفهوم - فتأكد من الكتابة عنه في التعليقات ضمن هذه المقالة.

في بعض الحالات، عند العمل في مجال التجارة، يصبح من الضروري الحصول على معلومات محدثة حول سعر صرف عملة معينة. ويعد البنك المركزي أفضل مصدر لهذه البيانات، ونظرا لأنه يوفر معلومات مفتوحة وفي الوقت المناسب عن سعر الصرف بتنسيق 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("القيمة")->القيمة),$format); )

ويحتوي على السطور:

$date = date("d/m/Y"); // التاريخ الحالي $cache_time_out = "3600"; // عمر ذاكرة التخزين المؤقت بالثواني

هم المسؤولون عن التاريخ (في حالتنا، هو التاريخ الحالي) وعمر ذاكرة التخزين المؤقت، على التوالي. نظرًا لأن البنك المركزي لا يقوم بتحديث بيانات العملة كثيرًا، فلا يجب أن تزعجه بهذه الطريقة في كل مرة تستخدمها. يمكنك تغيير القيم الموجودة في هذه السطور (اختياريًا) إلى قيمك الخاصة.

استخدام الدالة هو كما يلي:

صدى get_currency("USD"، 3);

هنا " دولار أمريكي" هو رمز عملة رمزي (في حالتنا، هو الدولار الأمريكي)، و" 3 " - عدد من الرموز بعد الفاصلة.

قائمة العملات المقبولة المقدمة من البنك المركزي للاتحاد الروسي (في وقت كتابة هذا التقرير) في شكل "رمز العملة - الفئة والاسم":

AUD - 1 دولار أسترالي AZN - 1 مانات أذربيجاني GBP - 1 جنيه إسترليني AMD - 100 درام أرميني BYN - 1 روبل بيلاروسي BGN - 1 ليف بلغاري BRL - 1 ريال برازيلي HUF - 100 HUF HKD - 10 دولارات هونج كونج DKK - 10 دنماركية كرونة دولار أمريكي - 1 دولار أمريكي EUR - 1 يورو INR - 100 روبية هندية KZT - 100 تنغي كازاخستان CAD - 1 دولار كندي KGS - 100 سوم قيرغيزستان CNY - 10 يوان صيني MDL - 10 MDL NOK - 10 كرونة نرويجية PLN - 1 PLN RON بولندي - 1 ليو روماني XDR - 1 حقوق السحب الخاصة (حقوق السحب الخاصة) SGD - 1 دولار سنغافوري TJS - 10 سوموني طاجيكي ليرة تركية - 1 ليرة تركية TMT - 1 مانات تركمان جديد UZS - 10,000 سوم أوزبكي UAH - 10 هريفنيا أوكرانية CZK - 10 كرونة تشيكية - 10 كرونة سويسرية - 1 فرنك سويسري ZAR - 10 راند جنوب أفريقي وون كوري - 1,000 وون جمهورية كوريا

آمل أن تجد الوظيفة مكانها في مشروعك. إذا كانت لديك أي أسئلة أو بدا لك شيء غير مفهوم - فتأكد من الكتابة عنه في التعليقات ضمن هذه المقالة.

لقد رأى الكثير منكم مرارًا وتكرارًا أن بعض المواقع تظهر معدل التحويل. وبالطبع فإن مسؤولي هذه المواقع أنفسهم لا يغيرونها يوميًا (آمل). يقومون بتنزيلها من موقع البنك المركزي. وفي هذه المقالة سأقدم الكود 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->طول؛ $ي++) (
/* نحن نبحث عن العملات التي نهتم بها */
$el = $childs_new->item($j);
$code = $el->nodeValue;
إذا (($code == "USD") || ($code == "EUR")) $data = $childs_new; // أضف العملات الضرورية إلى المصفوفة
}
}
/* تكرار المصفوفة ببيانات العملة */
لـ ($i = 0؛ $i< count($data); $i++) {
$list = $data[$i];
لـ ($j = 0؛ $j< $list->طول؛ $ي++) (
$el = $list->item($j);
/* عرض أسعار الصرف */
if ($el->nodeName == "Name") echo $el->nodeValue." - ";
elseif ($el->nodeName == "Value") echo $el->nodeValue."
";
}
}
?>

لقد حاولت التعليق بعناية على الكود، لذلك لا ينبغي أن تكون هناك مشاكل في فهمه. أيضًا، من أجل فهم سبب وجود الكثير من هذه الدورات ولماذا تأتي هذه الدورات، وكذلك من أين تأتي شروط معينة، أوصي بشدة باتباع الرابط من الكود (فقط استبدل التاريخ). ثم سوف ترى وثيقة XMLوسيكون من الأسهل عليك أن تفهم سبب كتابة هذا الرمز.

هناك العديد من البرامج النصية على شبكة الإنترنت التي تظهر أسعار الصرف. لكنني كنت بحاجة إلى الدولار واليورو من البنك المركزي. قررت أن أبحث عن النصوص التي سوف تظهر الأسعار الرسميةالعملات في تاريخ معين. لقد صادفت مقالة jQuery مثيرة للاهتمام وهي تقوم بفرز جدول. هناك في البرنامج النصي PHP محلل سعر الصرف" يتم سرقة مستند xml باستخدام التعبيرات العادية. يتم استخدام التعبيرات العادية بشكل كبير في سرقة التعليمات البرمجية. يعمل البرنامج النصي بشكل رائع، ولكن له خصائصه الخاصة. يقوم بإخراج جدول بتنسيق HTML يحتوي على عدد كبير من العملات. أحتاج قم بتكوين مصفوفة JSON من جدول بأسعار الصرف. هذه المجموعة تشبه النقانق. وهذا ما يسميه المبرمجون مثل هذه المصفوفة. يوجد نقانق كبيرة جدًا بأعداد كبيرة)))

/* * getArr() * أسعار الصرف من البنك المركزي * تم تحليل مستند xml * */ function 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); preg_match("~ (.*?) ~i",$data,$NumCode); $arr[$CharCode]["num_code"].= $NumCode; preg_match("~ (.*?) ~i",$data,$Nominal); $arr[$CharCode]["nominal"] = $Nominal ; preg_match("~ (.*?) ~i",$data,$Name); $arr[$ CharCode]["name"].= toUtf8($Name); preg_match("~ (.*?) ~i",$data,$Value); $arr[$CharCode]["value"].= $Value ; $i++; ) إرجاع $arr; ) ) وظيفة getContentPage($url) ( $c = curl_init($url); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); $text = curl_exec($c); curl_ Close($c); return $text; ) // تشفير إلى وظيفة Utf8 toUtf8($str) ( return mb_convert_encoding($str, "utf-8", "windows-1251"); ) $arr = getArr(); صدى 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.0374"))*/

أنت تستطيع عرض كل من سعر الصرف اليوم وسعر صرف الأمس. تتيح لك وظيفة strtotime("+0 day") تغيير الوقت. وبطبيعة الحال، كم عدد الأصفار التي لا تضيفها على أي حال، فإن قيمة المتغير لن تتغير. لقد تركت هذا الجزء من الكود حتى تتمكن من تغيير الوقت في أي وقت. اضطررت إلى إعادة ترتيب المصفوفة قليلاً. لقد استخدمت متغير CharCode $ كمفتاح للمصفوفة. هناك العديد من المصفوفات الأخرى في مصفوفتي الكبيرة، ولا يمكنك الوصول إلى مصفوفة معينة إلا عن طريق المفتاح (EUR). في حالتي، يأخذ المتغير $CharCode القيم التالية:

  1. أود => دولار أسترالي
  2. AZN => مانات أذربيجاني
  3. الجنيه الاسترليني => الجنيه الاسترليني
  4. AMD => الدراما الأرمنية
  5. BYR => الروبل البيلاروسي
  6. BGN => الليف البلغاري
  7. BRL => ريال برازيلي
  8. HUF => الفورنت المجري
  9. DKK => كرونة دنماركية
  10. الدولار الأمريكي => الدولار الأمريكي
  11. اليورو => اليورو
  12. إنر => روبية هندية
  13. KZT => تنغي كازاخستان
  14. CAD => الدولار الكندي
  15. KGS => السوم القرغيزستاني
  16. CNY => اليوان الصيني
  17. MDL => ليو مولدوفي
  18. NOK => كرونة نرويجية
  19. PLN => الزلوتي البولندي
  20. RON => ليو روماني جديد
  21. XDR => SDR (حقوق السحب الخاصة)
  22. SGD => دولار سنغافوري
  23. TJS => السوموني الطاجيكي
  24. TRY => ليرة تركية
  25. TMT => مانات تركمان الجديد
  26. UZS => المبلغ الأوزبكي
  27. UAH => هريفنا أوكرانية
  28. CZK => كرونة تشيكية
  29. SEK => كرونة سويدية
  30. الفرنك السويسري => الفرنك السويسري
  31. ZAR => راند جنوب أفريقيا
  32. وون كوري => وون كوري
  33. الين الياباني => الين الياباني

أنا مهتم فقط بالدولار الأمريكي واليورو. أنا لم إزالة من

مساء الخير أيها الأصدقاء الأعزاء. كما تعلمون، مؤخرًا (11 فبراير) حدث تخفيض آخر لقيمة العملة في كازاخستان، هذا "الثلاثاء الأسود" كما أطلق عليه الكثيرون على الإنترنت، أصاب جيوب الكثيرين. لن أكتب مقالًا سلبيًا آخر حول هذا الموضوع. لا أعتقد أنه من الضروري. ماحدث قد حدث. لكن في ذلك اليوم المشؤوم، كنت غاضبًا جدًا من حقيقة أنه لا يمكن في أي مكان على الإنترنت معرفة سعر الصرف الدقيق للدولار أو اليورو أو أي عملة أخرى. سعر صرف العملات. جميع المواقع المعروفة وغير المعروفة (مرحبًا جوجل) لم تكن متاحة لي. ربما لم تعد بعض المواقع تحظى بشعبية لدى المستخدمين الكازاخستانيين ولم تكن جاهزة لمثل هذا العدد الكبير من المستخدمين. ولكن تبقى الحقيقة أن المواقع لم تعمل.

وفي المساء، عندما بدأت عواطفي بشأن تخفيض قيمة العملة تهدأ وبدأت أعصابي تهدأ، قررت أنني بحاجة إلى أن أكتب لنفسي مخبرًا صغيرًا عن سعر الصرف على مدونتي الصغيرة المريحة. كما قلت أعلاه، لم أرغب في استخدام أدوات المواقع الأخرى، لأن هذه المواقع كانت "كذبة" عندما أرادت الكازنيت بأكملها معرفة سعر الصرف اللعين هذا. :) يوجد أدناه البرنامج النصي php informer، وأعتقد أن البرنامج النصي لا يحتاج إلى تعليقات:

$المبلغ = "1";
$من = "دولار أمريكي";
$من = "اليورو";
$من = "RUB";
$to="KZT";
$i=0;
بينما($i<= 2){
$i++;
الحصول على $ = تنفجر(" ",$get);
الحصول على $ = تنفجر("
",$get);


";
}
?>

البرنامج النصي عالمي، يمكنك تغيير المتغير إلى العملة الأخرى التي تريد التحويل إليها، بالإضافة إلى زيادة المصفوفات أو تغييرها $من[؟]أضف عملات أخرى، فقط لا تنسى تغيير حالة الحلقة إذا قمت بزيادة عدد العملات المسحوبة. يمكنك الحصول على معرف (اسم) العملات من الرابط - https://www.google.com/finance/converter. كما فهمت على الأرجح، يقوم البرنامج النصي بتحليل صفحة Google هذه في حلقة ويأخذ المعلومات التي يحتاجها.

كيفية تثبيت هذا البرنامج النصي على موقعك؟ إذا كان لديك محرك ووردبريس، فسوف تحتاج إلى تثبيت البرنامج المساعد " القطعة كود PHP"وحدد هذه القطعة وأضف كل التعليمات البرمجية هناك. هذه هي الطريقة الأسهل. إذا كانت هناك مشكلة، فيمكنك دائمًا تعطيل المكون الإضافي وسيعود كل شيء كما كان. لا أقدم خيارات معقدة لتثبيت البرنامج النصي. يمكنك مراسلتي عبر البريد الإلكتروني وسأحاول مساعدتك، وآمل أن يكون هذا المقال مفيدًا لك. :)

ملاحظة: بالنسبة لي، قمت بتحسين البرنامج النصي قليلاً (أضفت التخزين المؤقت) وأعطيت مهمة cron لتحديث البرنامج النصي مرة كل ساعة. الإصدار الخاص بي يحفظ ملف * .html وأعرضه في عناصر واجهة المستخدم، عبر ajax.

// بدء التخزين المؤقت للإخراج
ob_start();

$المبلغ = "1";
$من = "دولار أمريكي";
$من = "اليورو";
$من = "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);
$converted_amount = preg_replace("/[^0-9\.]/", null, $get);
$converted_amount = round($converted_amount,2);
echo $amount." ".$from[$i]." = ".$converted_amount." ".$to."
";
}

// احفظ المخرجات التي تم التقاطها في ملف .html
file_put_contents("currency.html"، ob_get_contents());
// نهاية التخزين المؤقت وعرض الصفحة
ob_end_flush();
?>

احفظ البرنامج النصي بتنسيق *.php، ويُنصح بحفظه في مجلد منفصل (على سبيل المثال، في مجلد "البرامج النصية"، حتى لا يؤدي إلى انسداد الموقع. بعد ذلك، ستحتاج إلى إضافة مهمة في المجلد cron، قم بالوصول إلى البرنامج النصي كل n ساعة. وبمجرد استخدام المتصفح، قم بالوصول يدويًا إلى البرنامج النصي بحيث يقوم بإنشاء ملف html، والذي سنشير إليه في المستقبل. بعد ذلك، يمكنك عرض البرنامج النصي في عناصر واجهة المستخدم من خلال iframe:

<النصي>
الدالة show_temp()
{
$.اجاكس ((
عنوان URL: "http://yoursite/scripts/currency.html"،
ذاكرة التخزين المؤقت: خطأ
النجاح: وظيفة (أتش تي أم أل) (
$("#currency").html(html);
}
});
}
$(مستند).جاهز(وظيفة()(
show_temp();
});

سيسمح لك هذا النوع من الإخراج بتغيير حجم الخط أو لون الخط أو إضافة أي تأثيرات أخرى عبر CSS (ورقة الأنماط المتتالية).

لن تقوم النسخة المحسنة من البرنامج النصي بتحميل الخادم والوصول باستمرار إلى Google. يمكنك تنفيذ التخزين المؤقت بشكل مختلف والتحقق حسب التاريخ حتى لا تستخدم cron. لكنني شخصيًا، انطلقت من إصدار بسيط. لا أحب أن أكون ذكيًا . :)

الغسالة مكسورة؟ 1v.kz سوف يساعد! - إصلاح الغسالات في ألماتي:

المهنيين من جميع أنحاء المدينة

يشارك