REST API позволяет с помощью простого запроса по HTTPS получить список городов и населенных пунктов используя базу данных Namaztimes.kz REST API позволяет получить данные в JSON, XML формате. Все данные в кодировке UTF-8.
Отправьте GET запрос на
https://namaztimes.kz/ru/api/cities[?id={state}][&type={format}]
API поддерживает запросы на HTTPS. Поддерживаемые форматы: JSON, XML.
В {state} можно указывать один id области, региона. Cписок областей, регионов можно взять тут
В {format} можно указывать формат передачи данных xml, json. Если {format} не указан, то формат автоматически становится json и добавляется функция console.dir.
Поэтому обязательно фильтруйте запросы от поисковых ботов. Это можно сделать простейшим регулярным выражением, вида:
$is_bot = preg_match(
"~(Google|Yahoo|Rambler|Bot|Yandex|Spider|Snoopy|Crawler|Finder|Mail|curl)~i",
$_SERVER['HTTP_USER_AGENT']
);
$geo = !$is_bot ? json_decode(file_get_contents('https://namaztimes.kz/ru/api/cities[?id={state}][&type={format}]'), true) : [];
var_dump($geo);
Также следует кэшировать результаты запросов для пользователей, чтобы при посещении пользователем 100 страниц сайта, не делать 100 запросов к API.
Результат обращения к API в JSON
//GET https://namaztimes.kz/ru/api/cities?id=almaty&type=json { 8408: "Алматы", 8409: "Баканас", 8410: "Бирлик", ... 74900: "Кеген", 74901: "Жаркент" }
Результат обращения к API в XML
//GET https://namaztimes.kz/ru/api/cities?id=almaty&type=xml <response> <city> <id>8408</id> <name>Алматы</name> </city> <city> <id>8409</id> <name>Баканас</name> </city> <city> <id>8410</id> <name>Бирлик</name> </city> ... <city> <id>74900</id> <name>Кеген</name> </city> <city> <id>74901</id> <name>Жаркент</name> </city> </response>
Описание полученных результатов обращения к API в JSON.
city_id: name
city_id - Идентификатор города.
name - Имя города.
Описание полученных результатов обращения к API в XML.
response->city->id - Идентификатор города.
response->city->name - Имя города.
GET https://namaztimes.kz/ru/api/cities?id=almaty&type=json
Выводит информацию городов и населенных пунктов области, региона с {state} = almaty. То есть Алматинская область в формате JSON.
Обработка результата обращения к API в JSON,XML вызов городов и населенных пунктов для области {state} = almaty
//PHP JSON $json = file_get_contents( 'https://namaztimes.kz/ru/api/cities?id=almaty&type=json' ); $json = json_decode($json,true); print_r($json); // PHP XML $xml = simplexml_load_file( 'https://namaztimes.kz/ru/api/cities?id=almaty&type=json' ); $xml = json_encode($xml); $xml = json_decode($xml,true); $xml = $xml['city']; $data = []; foreach ($xml as $item){ $data[$item['id']]= $item['name']; } unset($xml); print_r($data);
//PHP JSON Array ( [8408] => Алматы [8409] => Баканас [8410] => Бирлик ... [74900] => Кеген [74901] => Жаркент ) //PHP XML Array ( [8408] => Алматы [8409] => Баканас [8410] => Бирлик ... [74900] => Кеген [74901] => Жаркент )