Получение информации с другого сайта

Тема в разделе "Как сделать...", создана пользователем djvavik, 23 апр 2019.

XEvil 4.0 Релиз Состоялся!
Статус темы:
Закрыта.
  1. Minor

    Minor

    Регистр.:
    16 авг 2012
    Сообщения:
    246
    Симпатии:
    101
  2. Angelok

    Angelok Создатель

    Регистр.:
    26 июл 2017
    Сообщения:
    32
    Симпатии:
    17
    ну как это? вторая строка echo $data;

    здесь похоже я вас неправильно понял.
    сделайте вместо
    echo 'Результат';
    echo $data_array['value']['content'][0]['name'];
    echo $data_array['value']['content'][0]['author'];
    echo $data_array['value']['content'][0]['description'];
    echo $data_array['value']['content'][0]['authorEmail'];
    echo $data_array['value']['content'][0]['phone'];
    echo $data_array['value']['content'][0]['category']['name'];

    такой вывод:

    echo 'Результат';
    $res = "";
    foreach($data_array['value']['content'][0] as $item)
    $res = $res.$item.";";
    echo $res;


    это запись в файл текста 'строка 1' и с новой строки 'строка 2'
    если хотите записать туда что-то свое = передавайте туда вместо 'строка 1' вашу переменную, например
    fwrite($fp, $data_array['value']['content'][0]['name']);

    в предыдущем пункте я специально написал через переменную fwrite($fp, $data_array['value']['content'][0]['name']); так как догадался что вы хотите вывести ее в файл
    fwrite($fp, $res);
     
  3. Minor

    Minor

    Регистр.:
    16 авг 2012
    Сообщения:
    246
    Симпатии:
    101
    =
    Код:
    $res = implode (';',$data_array['value']['content'][0]); 
    
    :)
     
    Angelok нравится это.
  4. djvavik

    djvavik

    Регистр.:
    27 авг 2013
    Сообщения:
    171
    Симпатии:
    20
    Почему то выводится вся информация с блока, а как отдельные данные выбрать? несколько раз прописать

    PHP:
    echo 'Результат';
    $res "";
    foreach(
    $data_array['value']['content'][0]['name'] as $item);
    foreach(
    $data_array['value']['content'][0]['author'] as $item);
    foreach(
    $data_array['value']['content'][0]['description'] as $item);
    foreach(
    $data_array['value']['content'][0]['phone'] as $item);
    foreach(
    $data_array['value']['content'][0]['category']['name'] as $item);
    foreach(
    $data_array['value']['content'][0]['authorEmail'] as $item);
    res $res.$item.";";
    echo 
    $res;
    Верно?

    UP: нет, так не проходит. Ошибка 500. Подскажите, как можно выбрать определенные элементы из блока?
     
    Последнее редактирование: 20 июн 2019
  5. Angelok

    Angelok Создатель

    Регистр.:
    26 июл 2017
    Сообщения:
    32
    Симпатии:
    17
    тогда помимо echo $data;
    уберите var_dump($data_array); или print_r($data_array); - у вас где-то ниже выводится на экран.

    если будут проблемы - сразу киньте сюда весь код чтобы 2 раза за пивом не бегать :)
     
  6. Minor

    Minor

    Регистр.:
    16 авг 2012
    Сообщения:
    246
    Симпатии:
    101
    а я для кого писал ?
    Код:
    //Если вложенность, то так
    echo $json->value->content[0]->id;
    
     
  7. djvavik

    djvavik

    Регистр.:
    27 авг 2013
    Сообщения:
    171
    Симпатии:
    20
    Поправил сообщение выше)

    И еще вопрос: Почему то выводится только значения по одной заявке (последней) , а по остальным нету.

    Код полностью:

    PHP:
    <? function request($url,$post 0){
    $ch curl_init();
    curl_setopt($chCURLOPT_URL$url );
    curl_setopt($chCURLOPT_HEADER0);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
    curl_setopt($chCURLOPT_CONNECTTIMEOUT30);
    curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
    curl_setopt($chCURLOPT_COOKIEJARdirname(__FILE__).'/cookie.txt');
    curl_setopt($chCURLOPT_COOKIEFILEdirname(__FILE__).'/cookie.txt');
    curl_setopt($chCURLOPT_POST$post!==);
    if(
    $post)
    curl_setopt($chCURLOPT_POSTFIELDS$post);
    $data curl_exec($ch);
    curl_close($ch);
    return 
    $data;
    }
    request'https://eds.mosreg.ru/login',
    array(
    'login-form-email'=>'Логин',
    'login-form-password'=>'Пароль',
    ));
    $data=request('https://eds.mosreg.ru/api/claims?status=SOLVED');
    $data_array=json_decode($datatrue);
    echo 
    'Результат;';
    $res "";
    foreach(
    $data_array['value']['content'][0] as $item)
    $res $res.$item.";";
    echo 
    $res;
    Результат:
    Код:
    Результат;100916;1;;13103-20-06-2019-28;Москва, Вернадского, 32;;+7900123456789;Виктория;agent@yandex.ru;agent@yandex.ru;Добрый день. Подскажите пожалуйста сроки отключения горячей воды в доме;20 июня 2019 10:31;22 июня 2019 10:31;20 июня 2019 10:54;Array;Array;SOLVED;Array;Array;Array;Array;Житель;
    Еще почему то после адреса лишний значок ";"

    Вставил echo $json->value->content[0]->name; Вместо foreach($data_array['value']['content'][0] as $item) Не выводит значения.
     
  8. Angelok

    Angelok Создатель

    Регистр.:
    26 июл 2017
    Сообщения:
    32
    Симпатии:
    17
    Код:
    <?
    
    function request($url,$post = 0)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url );
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
        curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
        curl_setopt($ch, CURLOPT_POST, $post!==0 );
        if($post)
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
            $data = curl_exec($ch);
            curl_close($ch);
            return $data;
    }
    request('https://eds.mosreg.ru/login',
        array(
            'login-form-email'        =>    'Логин',
            'login-form-password'    =>    'Пароль',
        ));
    $data        = request('https://eds.mosreg.ru/api/claims?status=SOLVED');
    $data_array    = json_decode($data, true);
    
    echo 'Результат;';
    echo implode(';',$data_array['value']['content'][0]);

    правда так и не понял зачем вы спрашивали про запись в файл...

    P.S. Используйте пробелы и табуляторы при оформлении кода
     
  9. djvavik

    djvavik

    Регистр.:
    27 авг 2013
    Сообщения:
    171
    Симпатии:
    20
    В фаил я еще ничего не записал. Я хочу пока получить результат по ссылке. Затем уже записать результат, который меня удовлетворяет в фаил.

    И еще вопрос: Почему то выводится только значения по одной заявке (последней) , а по остальным нету.
     
  10. Angelok

    Angelok Создатель

    Регистр.:
    26 июл 2017
    Сообщения:
    32
    Симпатии:
    17
    потому что вы не вывели весь JSON а только для случая одной заявки - вам и дали код для этого случая.

    предполагаю что у вас массив заявок надо разобрать так:

    Код:
    <?
    
    function request($url,$post = 0)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url );
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
        curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
        curl_setopt($ch, CURLOPT_POST, $post!==0 );
        if($post)
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
            $data = curl_exec($ch);
            curl_close($ch);
            return $data;
    }
    request('https://eds.mosreg.ru/login',
        array(
            'login-form-email'        =>    'Логин',
            'login-form-password'    =>    'Пароль',
        ));
    $data        = request('https://eds.mosreg.ru/api/claims?status=SOLVED');
    $data_array    = json_decode($data, true);
    
    //echo 'Результат;';       //не думаю что эта надпись вам нужна
    foreach($data_array['value']['content'] as $item)
    {
        echo implode(';',$item);
        echo "\n";
    }
     
Статус темы:
Закрыта.