Получение котировок валют с сайта ЦБР (пример использования SimpleXML)

На одном из сайтов понадобились котировки валют.. Получился такой замечательный хелпер :)
Кстати, хороший пример использования SimpleXML, хватит уже изобретать всякие xml2array - всё придумано до нас!

  1. <?php
  2. /**
  3.  * @descr Helper for getting currency values from cbr.ru
  4.  * @param (string) $code Code of currency you need
  5.  * @param (string) [$date] Date of day you need (format: "d/m/Y")
  6.  * @param (string) [$template] Template for html-making where ?c will be currency charcode, ?n will be nominal and ?v will be currency value in rubbles
  7. **/
  8. function getCbrCurrency( $code, $date = '', $template = '' ) {
  9. $date = $date
  10. ? $date
  11. : date( "d/m/Y" );
  12.  
  13. if ( strlen( $GLOBALS['___XML'][$date] ) > 50 || $GLOBALS['___XML'][$date] = file_get_contents( "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date" ) ) {
  14. $xml = simplexml_load_string( $GLOBALS['___XML'][$date] );
  15. foreach ( $xml->Valute as $o ) {
  16. if ( $o->CharCode == $code ) {
  17. return array(
  18. 'CharCode' => (string)$o->CharCode[0],
  19. 'Nominal' => (string)$o->Nominal[0],
  20. 'Value' => (string)$o->Value[0],
  21. 'html' => $template
  22. ? str_replace(
  23. array(
  24. '?c',
  25. '?n',
  26. '?v'
  27. ),
  28. array(
  29. (string)$o->CharCode[0],
  30. (string)$o->Nominal[0],
  31. (string)$o->Value[0]
  32. ),
  33. $template
  34. )
  35. : '',
  36. );
  37. }
  38. }
  39. }
  40. return false;
  41. }
  42.  
  43. print_r( getCbrCurrency ( 'USD', '', '<span>?c:</span> ?v р.' ) );