Как извлечь пару значений ключа из ответа API от stackoverflow, используя php?
ключи имя и количество
ссылка для получения ответа приведена ниже
Ссылка API запроса stackoverflow
ответ как
{ «элементы»: [{ «has_synonyms»: истинные «is_moderator_only»: ложные, «is_required»: ложь, «Count»: 835623, «название»: «Java»}, { «has_synonyms»: истинные «is_moderator_only» ложь, «is_required» ложь «считать»: 826692, «название»: «JavaScript»}, { «has_synonyms»: правда, «is_moderator_only» ложь «is_required»: ложные, «подсчет»: 780233,» назвать «:» C # «}, {» has_synonyms «: истинные» is_moderator_only «: ложные,» is_required «: ложный» Count «: 733762,» название «:» PHP «}, {» has_synonyms «: правда» is_moderator_only «ложь» is_required «ложь» счетчик «: 656491,» название «:» андроид «}, {» has_synonyms «ложь» is_moderator_only «ложь» is_required «ложь» счетчик «: 600666 , «название»: «JQuery»}, { «has_synonyms»: истинный «is_moderator_only»: ложный, «is_required»: ложный, «подсчет»: 411780, «название»: «Python»}, { «has_synonyms»: истинный , «is_moderator_only» ложь «is_required» ложь «счетчик»: 402876, «название»: «HTML»}, { «has_synonyms»: истинный «is_moderator_only»: ложный, «is_required»: ложный, «подсчет» : 361469, «имя»: «C ++»}, { «has_synonyms»: правда, «is_moderator_only»: ложные «is_required»: ложь, «подсчет»: 324702, «имя»: «ИОС»}, { «has_synon YMS «: правда,» is_moderator_only «ложь» is_required «ложь» счетчик «: 314826,» название «:» MySQL «}, {» has_synonyms «: правда,» is_moderator_only «ложь» is_required «ложь , «считать»: 296359, «название»: «CSS»}, { «has_synonyms»: правда, «is_moderator_only» ложь «is_required»: ложные, «подсчет»: 271 375, «название»: «SQL»}, { «has_synonyms»: истинные «is_moderator_only»: ложные, «is_required» ложь «счетчик»: 253038, «название»: «asp.net»}, { «has_synonyms»: правда, «is_moderator_only» ложь» is_required «ложь» счетчик «: 224602,» название «:» цель-с «}, {» has_synonyms «: правда,» is_moderator_only «ложь» is_required «: ложные,» подсчет «: 207451,» название» :}, { «has_synonyms «»чистый».: правда,» is_moderator_only «: ложные» is_required «: ложь,» подсчет «: 202666,» имя «:» iphone «}, {» has_synonyms «: правда,» is_moderator_only «ложь» is_required «ложь» счетчик «: 200238,» название «:» рубин-на-рельсы «}, {» has_synonyms «: ложный,» is_moderator_only «: ложный,» is_required «: ложный,» подсчет «: 176868,» название «:» с «}, {» has_synonyms «: ложный,» is_moderator_only «: ложный,» is_required «: ложный,» подсчет «: 130813,» название «:» рубин «}, {» has_synonyms «:правда,» is_moderator_only «ложь» is_required «ложь» счетчик «: 129764,» название «:» массивы «}, {» has_synonyms «: правда,» is_moderator_only «ложь» is_required «ложь» счетчик «: 127562 , «название»: «SQL-сервер»}, { «has_synonyms»: правда, «is_moderator_only» ложь «is_required» ложь «счетчик»: 116079, «название»: «Ajax»}, { «has_synonyms» : правда, «is_moderator_only» ложь «is_required» ложь «счетчик»: 114163, «название»: «регулярное выражение»}, { «has_synonyms»: ложный, «is_moderator_only»: ложный, «is_required» ложь» рассчитывать «: 112127,» название «:» XML «}, {» has_synonyms «: правда,» is_moderator_only «ложь» is_required «: ложные,» подсчет «: 111066,» название «:» JSON «}, {» has_synonyms «: истинный» is_moderator_only «ложь» is_required «ложь» счетчик «: 107333,» название «:» asp.net-MVC «}, {» has_synonyms «: ложный,» is_moderator_only «ложь» is_required «ложь» счетчик «: 99944,» название «:» МОФ «}, {» has_synonyms «ложь» is_moderator_only «ложь» is_required «: ложные,» подсчет «: 98195,» название «:» Linux «}, {» has_synonyms «ложь» is_moderator_only «ложь» is_required «ложь» счетчик «: 93114,» название «:» Джанго «}],» has_more «: правда,» quota_max «: 300 ,» quota_remaining «: 228}
Я сделал это, но не получил ответа в php
<?php
$url = 'https://api.stackexchange.com/2.2/tags?order=desc&sort=popular&site=stackoverflow';
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_HTTPGET, true);
curl_setopt($cURL, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Accept: application/json'
));
$result = curl_exec($cURL);
curl_close($cURL);print_r($result);
?>
Я также сделал это с помощью javascript там, я получаю ответ, но нет никакого способа, которым javascript может взаимодействовать с базой данных. Я попытался отправить его в php-файл оттуда, но я не могу получить пару ключ-значение из запроса.
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$.ajax({
type:"GET",
url:"https://api.stackexchange.com/2.2/tags?order=desc&sort=popular&site=stackoverflow",
success:function(data){
$.ajax({
type:"POST",
url:"savetodb.php",
data:"data="+JSON.stringify(data),
success:function(daa){
alert(daa) }
})
}
})
</script>
Я также попробовал функцию php file_get_contents ([URL])
код следующий
<?php
$url = "https://api.stackexchange.com/2.2/tags?order=desc&sort=popular&site=stackoverflow";
$json = file_get_contents($url);
$json_data = json_decode($json, true);
print_r($json_data);
?>
Я получаю ошибку
1.file_get_contents (): php_network_getaddresses: getaddrinfo не удалось: такой хост не известен
2.file_get_contents (https://api.stackexchange.com/2.2/tags?order=desc&сортировать = популярный&сайт = StackOverflow): не удалось открыть поток: php_network_getaddresses: getaddrinfo не удалось: такой хост не известен
Как указано в Документация по Stack Exchange API,
Все ответы API являются JSON
поэтому вы должны искать синтаксический анализ JSON на языке программирования, который вам нужно использовать.
Для части DNS я думаю, что вы должны проверить этот ответ на сервере; сосредоточиться на первых двух вещах:
[ИКС]Первое, что нужно проверить, это проверить ваш php.ini и убедиться, что эти атрибуты включены
[ИКС]allow_url_fopen = On
allow_url_include = On
Создайте файл phpinfo () [на всякий случай phpinfofile.com] и проверьте, включены ли эти расширения
OpenSSL
Разъем
Специально для пользователей Windows, использующих xammp или wammp, отключив расширение PHP_OpenSSL, вы не сможете подключиться через @fsockopen
Других решений пока нет …