[
'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 "| {$jobName} | ";
echo "{$companyName} | ";
echo "{$salary} | ";
echo "{$dateFormatted} | ";
echo '
';
}
echo '
';
} else {
echo '
В настоящий момент актуальных вакансий по городу Асбест не найдено.
';
}
} else {
// Если сервер ТрудВсем временно недоступен или лежит
echo '
Не удалось загрузить вакансии с сервера "Работа России". Пожалуйста, обновите страницу позже.
';
}
?>