• Почему перестал работать код для получения котировок валют от цб рф, ссылаясь на "failed to open stream: Redirection limit reached, aborting"?

    alexkbs
    @alexkbs
    Не ЦБ единым... Есть прокси для получения курсов ЦБ РФ без лишних заморочек, во всевозможных форматах.
    https://www.cbr-xml-daily.ru/
    https://www.cbr-xml-daily.ru/daily.xml
    https://www.cbr-xml-daily.ru/daily_utf8.xml
    https://www.cbr-xml-daily.ru/daily_eng.xml
    https://www.cbr-xml-daily.ru/daily_eng_utf8.xml
    https://www.cbr-xml-daily.ru/daily_json.js
    https://www.cbr-xml-daily.ru/daily_jsonp.js

    Работает так: (пример с сайта)
    <div id="USD">Доллар США $ — 00,0000 руб.</div>
    <div id="EUR">Евро € — 00,0000 руб.</div>
    
    <script>
    function CBR_XML_Daily_Ru(rates) {
    	var USDrate = rates.Valute.USD.Value.toFixed(4).replace('.', ',');
    	var USD = document.getElementById('USD');
    	USD.innerHTML = USD.innerHTML.replace('00,0000', USDrate);
    
    	var EURrate = rates.Valute.EUR.Value.toFixed(4).replace('.', ',');
    	var EUR = document.getElementById('EUR');
    	EUR.innerHTML = EUR.innerHTML.replace('00,0000', EURrate);
    }
    </script>
    <script src="https://www.cbr-xml-daily.ru/daily_jsonp.js"></script>

    Огромное преимущество перед выкачкой курсов в XML в том что ничего не нужно качать и парсить на стороне сервера. Ничего такого, что в другом ответе, делать не нужно. Страницы открываются много шустрее.
    Ответ написан
    1 комментарий
  • Вопрос для гуру регулярных выражений

    Mithgol
    @Mithgol
    Сперва убрать из строки все нескобки (то есть найти регулярным выражением «[^()]» и заменить на пустую строку), затем перейти от регулярных выражений к обыкновенному программированию — пройтись по итоговой строке скобок в посимвольном цикле, который к значению некоторой переменной (изначально имеющей нулевое значение) прибавляет единицу, если найден символ «(», и вычитает единицу, если найден символ «)», причём цикл сразу завершается, если значение меньше нуля (найден дисбаланс скобок), а в конце цикла (что соответствует концу строки скобок) это значение также должно быть равно нулю, иначе опять же найден дисбаланс скобок.
    Ответ написан
    3 комментария