[ 'method' => 'GET', 'header' => "User-Agent: AsbestGidBot/1.0 (https://asbestgid.ru)\r\nAccept: application/json\r\n" ] ]; $context = stream_context_create($options); // 3. Запрашиваем данные с сервера $response = @file_get_contents($url, false, $context); if ($response) { // Декодируем JSON-ответ в ассоциативный массив $data = json_decode($response, true); // Проверяем, пришли ли вакансии if (isset($data['results']['vacancies']) && !empty($data['results']['vacancies'])) { // Строим HTML-таблицу в дизайне вашего сайта echo ''; echo ''; foreach ($data['results']['vacancies'] as $item) { $v = $item['vacancy']; // Форматируем дату из YYYY-MM-DD в привычный формат DD.MM.YYYY $dateRaw = $v['creation-date']; $dateFormatted = $dateRaw ? date('d.m.Y', strtotime($dateRaw)) : '-'; // Обрабатываем отображение зарплаты $salary = 'не указана'; if (!empty($v['salary_min']) && !empty($v['salary_max'])) { $salary = ($v['salary_min'] === $v['salary_max']) ? number_format($v['salary_min'], 0, '.', ' ') . ' руб.' : 'от ' . number_format($v['salary_min'], 0, '.', ' ') . ' до ' . number_format($v['salary_max'], 0, '.', ' ') . ' руб.'; } elseif (!empty($v['salary_min'])) { $salary = 'от ' . number_format($v['salary_min'], 0, '.', ' ') . ' руб.'; } // Ссылка на подробное описание вакансии на федеральном портале $vacancyUrl = !empty($v['vac_url']) ? htmlspecialchars($v['vac_url']) : '#'; $jobName = htmlspecialchars($v['job-name']); $companyName = htmlspecialchars($v['company']['name']); echo ''; echo ""; echo ""; echo ""; echo ""; echo ''; } echo '
Профессия Организация / Источник Зарплата Дата публикации
{$jobName}{$companyName}{$salary}{$dateFormatted}
'; } else { echo '

В настоящий момент актуальных вакансий по городу Асбест не найдено.

'; } } else { // Если сервер ТрудВсем временно недоступен или лежит echo '

Не удалось загрузить вакансии с сервера "Работа России". Пожалуйста, обновите страницу позже.

'; } ?>