За последние 24 часа нас посетили 23008 программистов и 1225 роботов. Сейчас ищут 878 программистов ...

Обработка JSON ответа

Тема в разделе "Сделайте за меня", создана пользователем dergnol, 15 май 2018.

  1. dergnol

    dergnol Новичок

    С нами с:
    15 май 2018
    Сообщения:
    22
    Симпатии:
    0
    Всем привет!Возникла проблема.
    Отправляю http post запрос на удаленный сайт. Мой сайт отображает следующие:
    Код (Text):
    1. string(929) "<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
    2.  
    3. <h4>A PHP Error was encountered</h4>
    4.  
    5. <p>Severity: Notice</p>
    6. <p>Message:  Undefined index: HTTP_REFERER</p>
    7. <p>Filename: front/der.php</p>
    8. <p>Line Number: 40</p>
    9.  
    10. </div>{"body":"<div class=\"alert alert-info\" style=\"display:block\">\u0421\u0442\:    <b>\u041e\u0431\<\/b><br \/>\u041f\: <b>\u0420\u041e<\/b><br>\u0431\u043c = <span class=\"datavalue\">12<\/span><\/h1>\u041a\u043b: <b>6<\/b><br \/><\/div>","data":12,"bd_id":"5645919117","finded":false,"finded_txt":"","want_data":true}"
    11. <hr/><hr/>
    Как мне получить переменную "data":12,(то есть 12 ) , без всего остального?????


    И использую код:

    PHP:
    1. <?php
    2. header('Content-type:application/json;charset=utf-8');
    3.  
    4.  
    5. $fio1="Дубровский Александр Серафимович";
    6. $dr1="09.04.1961";
    7. $postdata = http_build_query(
    8.     array(
    9.         'name' => $fio1,
    10.         'dr' => $dr1
    11.     )
    12. );
    13.  
    14.  
    15.  
    16.  
    17. //отправляем сложный запрос с параметрами
    18. $url = 'https://sait.ru/check';
    19.  
    20.     'http' => [
    21.         'method' => 'POST',
    22.         //'header'  => 'Content-type:application/json;charset=utf-8',
    23.         'header' =>'Content-Encoding: gzip',
    24.         'content' => $postdata
    25.     ]
    26. ]);
    27.  
    28. $result = file_get_contents($url, false, $context);
    29.  
    30. function escape_win ($path) {
    31. $path = strtoupper ($path);
    32. return strtr($path, array("\U0430"=>"а", "\U0431"=>"б", "\U0432"=>"в",
    33. "\U0433"=>"г", "\U0434"=>"д", "\U0435"=>"е", "\U0451"=>"ё", "\U0436"=>"ж", "\U0437"=>"з", "\U0438"=>"и",
    34. "\U0439"=>"й", "\U043A"=>"к", "\U043B"=>"л", "\U043C"=>"м", "\U043D"=>"н", "\U043E"=>"о", "\U043F"=>"п",
    35. "\U0440"=>"р", "\U0441"=>"с", "\U0442"=>"т", "\U0443"=>"у", "\U0444"=>"ф", "\U0445"=>"х", "\U0446"=>"ц",
    36. "\U0447"=>"ч", "\U0448"=>"ш", "\U0449"=>"щ", "\U044A"=>"ъ", "\U044B"=>"ы", "\U044C"=>"ь", "\U044D"=>"э",
    37. "\U044E"=>"ю", "\U044F"=>"я", "\U0410"=>"А", "\U0411"=>"Б", "\U0412"=>"В", "\U0413"=>"Г", "\U0414"=>"Д",
    38. "\U0415"=>"Е", "\U0401"=>"Ё", "\U0416"=>"Ж", "\U0417"=>"З", "\U0418"=>"И", "\U0419"=>"Й", "\U041A"=>"К",
    39. "\U041B"=>"Л", "\U041C"=>"М", "\U041D"=>"Н", "\U041E"=>"О", "\U041F"=>"П", "\U0420"=>"Р", "\U0421"=>"С",
    40. "\U0422"=>"Т", "\U0423"=>"У", "\U0424"=>"Ф", "\U0425"=>"Х", "\U0426"=>"Ц", "\U0427"=>"Ч", "\U0428"=>"Ш",
    41. "\U0429"=>"Щ", "\U042A"=>"Ъ", "\U042B"=>"Ы", "\U042C"=>"Ь", "\U042D"=>"Э", "\U042E"=>"Ю", "\U042F"=>"Я",
    42. "<\/B>"=>"</b>"));
    43. }
    44. var_dump($result); // вывод результата  ТАК СЕЙЧАС
    45.  
    46. $obj=json_decode($result,true);
    47. $data= $obj->{'data'};
    48. //$body= $obj->body;
    49. echo "<hr/>$data<hr/>";//  ТАК ВЫВОДИТСЯ ТОЛЬКО <hr/><hr/>
    50. //$print= escape_win($result);
    51. //$print=str_replace(" ","",$print);
    52.  
    53.  
    54.  
    55. ?>
    ЧТО ДЕЛАТЬ ПОДСКАЖИТЕ???
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    у тебя ошибка, которая вываливается в output и какие-то <hr> там после. разберись с этим, потом будет парситься json
     
  3. dergnol

    dergnol Новичок

    С нами с:
    15 май 2018
    Сообщения:
    22
    Симпатии:
    0
    Я понимаю, что лишний кусок ответа:
    Код (Text):
    1. string(929) "<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
    2. <h4>A PHP Error was encountered</h4>
    3. <p>Severity: Notice</p>
    4. <p>Message:  Undefined index: HTTP_REFERER</p>
    5. <p>Filename: front/der.php</p>
    6. <p>Line Number: 40</p>
    7. </div>
    К сайту, на который я отправляю запрос,я ни имею ни какого отношения и доступа,но в самом JSON мне ответил верные значения
    "data":12, (то есть 12 )- это мне число и надо вытащить, засунуть в переменную и сохранить в БД.

    Как избавится от этого лишнего куска ответа и получить нужные мне значения?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    ну руками посчитай число символов и откуси просто перед отдачей на json
     
    dergnol нравится это.
  5. dergnol

    dergnol Новичок

    С нами с:
    15 май 2018
    Сообщения:
    22
    Симпатии:
    0
    Ха! Оказалось все совсем просто!Спасибо за подсказку!!!
    Использовал:
    PHP:
    1. $rest = substr("$result",516);
    2. $obj=json_decode($rest);
    3. $data= $obj->{'data'};
    4.  
    5. echo $data;
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    но лучше написать на тот сайт и сказать, что ошибки в ответы лезут
     
  7. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Отсчитать 516 символов... А если завтра внезапно окажется другое кол-во?
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    ошибки в выводе быть не должно
    ошибки должны быть в логе
    так что это костыль
     
  9. dergnol

    dergnol Новичок

    С нами с:
    15 май 2018
    Сообщения:
    22
    Симпатии:
    0
    Дело в том что эта ошибка это мера безопасности сайта на который я отправляю запрос.Ошибка показывает, что HTTP_REFERER не верный или не найден
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    на защиту это ващпе не похоже
    так покажи ему верный
    на каком сайте эти запросы работают?
    --- Добавлено ---
    задай ему любой
    --- Добавлено ---
    PHP:
    1.     'http' => [
    2.         'method' => 'POST',
    3.         //'header'  => 'Content-type:application/json;charset=utf-8',
    4.         'header' =>"Content-Encoding: gzip\r\n" .
    5.                          "Referer: yandex.ru\r\n"
    6.         'content' => $postdata
    7.     ]
    8. ]);
     
    dergnol нравится это.
  11. dergnol

    dergnol Новичок

    С нами с:
    15 май 2018
    Сообщения:
    22
    Симпатии:
    0
    Адрес сказать не могу т.к это сервис по определению КБМ.

    Я на него передаю все значения из value,которые есть в форме и в java.js

    Отправить значение HTTP_REFERER я уже пробовал, без изменений.
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
  13. dergnol

    dergnol Новичок

    С нами с:
    15 май 2018
    Сообщения:
    22
    Симпатии:
    0

    Вставил 'header'=> 'Referer: sait.ru\r\n',
    Отобразился чистый json.
    Спасибо тебе!
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    да не за что.