Информер РБК в UTF-8

Информеры — автоматически изменяющиеся тестовые и графические элементы, размещенные на веб-сервере РБК и доступные для всех пользователей Интернета.

На этих элементах размещается информация о наиболее популярных финансовых индикаторах (курс доллара ЦБ РФ, СЭЛТ).

Наиболее популярным из информеров РБК является HTML-информер с использованием javascript.

В его состав входят:

  • СПБВБ: валюты (СЭЛТ)
  • Рынок наличной валюты
  • Российские фондовые индексы
  • Котировки акций. По данным РТС- МФБ
  • Котировки FOREX
  • Котировки фьючерсов
  • Мировые фондовые индексы
  • Погода в городах России и СНГ
  • Курсы ЦБ РФ
  • Курсы ЦБ РФ по драгоценным металлам

Для сборки информера, перейдите на сайт informer.ru и выберите нужные вам позиции для отображения.

Затем в head разделе вашей веб-страницы подключите javascript-файл

<head>
	<script src="http://www.rbc.ru/tables99/indices.js"></script>
</head>

А в том месте, где бы вы хотели видеть информер, вызовите функцию печатающую HTML-код

<body>
<script>
	print_ind('_RTS_INDEX_-_RBCCI_-_USD_CB_-_GBP_CB_-_EUR_CB_-_CHF_CB_');
</script>
</body>

Наслаждаемся результатом. Но, если ваш сайт в кодировке UTF-8, автоматически возникает проблема с кодировками, так как информер отдается сервером RBC в кодовой таблице windows-1251. Для решения этой проблемы есть 2 варианта.

1. Использование атрибута charset тега script

<head>
	<script src="http://www.rbc.ru/tables99/indices.js" charset="windows-1251"></script>
</head>
<body>
<script charset="windows-1251">
	print_ind('_RTS_INDEX_-_RBCCI_-_USD_CB_-_GBP_CB_-_EUR_CB_-_CHF_CB_');
</script>
</body>

2. Отдавать javascript-файл РБК через наш РНР-скрипт

<head>
	<script src="http://наш_домен/js/rbc_indices.php" charset="UTF-8"></script>
</head>
<body>
<script charset="UTF-8">
	print_ind('_RTS_INDEX_-_RBCCI_-_USD_CB_-_GBP_CB_-_EUR_CB_-_CHF_CB_');
</script>
</body>

В файле rbc_indices.php пишем примерно следующее:

header('Content-type: application/javascript; charset=UTF-8');
$url = 'http://www.rbc.ru/tables99/indices.js';
$content = file_get_contents($url);
$content = iconv('windows-1251', 'utf-8', $content);
die($content);

Данные методы можно применять не только для сервера РБК, а практически в любых ситуациях, когда кодировка сайта отличается от кодировки скрипта.

Источник: https://www.kobzarev.com/programming/rbc-informer-in-the-utf-8/

Михаил Кобзарёв

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

Добавить комментарий

%d такие блоггеры, как: