Вывод переменных из js

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

  1. Dukuй

    Dukuй Щас сменю себе статус

    Регистр.:
    24 фев 2009
    Сообщения:
    296
    Симпатии:
    190
    Подскажите пожалуйста разобраться.
    Имеется файл JS http://img.combats.com/auction/dump.js который обновляется каждые 5 минут.
    Собственно как вывести его содержимое(переменные) в HTML или PHP?

    Пока приходит в голову только вот это
    PHP:
    <?php
    $url 
    file_get_contents("http://img.combats.com/auction/dump.js");
    $data json_decode($url);
    $arr = array();


        foreach (
    $data->auction_dump as $key=>$value) {
                    
    $arr[$key]['name'] = $value->name;
                    
    $arr[$key]['txt'] = $value->txt;
                    
    $arr[$key]['id'] = $value->id;
            }


    $count count($arr);
    for (
    $i 0$i $count$i++) {
    echo 
    $arr[$i]['name'];
    echo 
    $arr[$i]['txt'];
    echo 
    $arr[$i]['id'];
    }
    ?>
    Но ругается на Warning: Invalid argument supplied for foreach() in /home/htdocs/www/test/index.php on line 7

    Мне кажется, ошибка именно в
    foreach ($data->auction_dump as $key=>$value)

    Вот как раз вывести в блок по ID и нужно
     
    Последнее редактирование модератором: 9 фев 2015
  2. farang

    farang Постоялец

    Регистр.:
    30 авг 2006
    Сообщения:
    105
    Симпатии:
    78
    это с первого взгляда на json похоже
    гугли в сторону json_decode true
    или прога найми, тут есть такие
     
    Dukuй нравится это.
  3. qpPeW

    qpPeW Постоялец

    Регистр.:
    5 окт 2009
    Сообщения:
    80
    Симпатии:
    31
    По конкретней опишите, можно вывести разными способами, самый элементарный это вывести в блок по id.
     
  4. ZOLK

    ZOLK

    Регистр.:
    13 сен 2011
    Сообщения:
    189
    Симпатии:
    107
    Если хочешь сам разрулить, тогда читай file_get_contents - http://php.net/manual/ru/function.file-get-contents.php и с помощью CRON каждые 5 минут запускать этот php файл, в самом файле код js с циклом, хз чего тебе нужно. Для начала тебе массив данных(того фалйа который ты привел) нужно перебрать циклом а в цикле по условиям задать свои правила и записать данные(или массив данных) в переменную и выводить, а крон будет делать это каждые 5 минут, т.е обновлять данные
     
    Dukuй нравится это.
  5. farang

    farang Постоялец

    Регистр.:
    30 авг 2006
    Сообщения:
    105
    Симпатии:
    78
    а чо яваскриптом бы не выводить? возьми с донора вывод, а эту часть подкачивай
    или там комбайн автоматизируешь
     
  6. kise97

    kise97 Создатель

    Регистр.:
    22 июн 2012
    Сообщения:
    16
    Симпатии:
    2
    Вообще, это не json, а JS объект.

    json_decode по умолчанию возвращает не массив, а объект, поэтому надо ставить параметр assoc в true, если хотите юзать как array. В вашей реализации вы просто скачиваете файл, а надо регуляркой вырезать содержимое.
    Короче, вот код, смотрите сами

    Код:
    <?php
    
    $html = file_get_contents('http://img.combats.com/auction/dump.js');
    $json = json_decode(str_replace('var auction_dump=', '', $html));
    
    var_dump($json);
    
    ?>
     
  7. Dukuй

    Dukuй Щас сменю себе статус

    Регистр.:
    24 фев 2009
    Сообщения:
    296
    Симпатии:
    190
    Мне необходимо сделать таблицу из содержимого. В вашей версии фаил просто выводится полностью как есть
     
  8. farang

    farang Постоялец

    Регистр.:
    30 авг 2006
    Сообщения:
    105
    Симпатии:
    78
    блин возьми кисе дай денег и скажи как тебе надо и норм будет бро
     
  9. zaxap83

    zaxap83 Постоялец

    Регистр.:
    6 дек 2010
    Сообщения:
    87
    Симпатии:
    28
    "var_dump($json)" человек указал в качестве примера, нужные манипуляции с объектом вы можете уже производить сами, например разобрать так же через foreach, как вы пытались выше. Только обратите внимание, нужные вам данные появляются не с нулевого элемента, а с первого
    PHP:
    $html file_get_contents('http://img.combats.com/auction/dump.js');
    $json json_decode(str_replace('var auction_dump='''$html));
    $arr = array();
    foreach (
    $json as $key=>$value) {
        if(
    $key 0)
            {
                
    $arr_key $key 1;
                
    $arr[$arr_key]['name'] = $value->name;
                
    $arr[$arr_key]['txt'] = $value->txt;
                
    $arr[$arr_key]['id'] = $value->_auc->id;
            }
    }
    $count count($arr);
    for (
    $i 0$i $count$i++) {
        echo 
    $arr[$i]['name'].' ';
        echo 
    $arr[$i]['txt'].' ';
        echo 
    $arr[$i]['id'].'<br>';
    }
    тот же вариант, но без глупого перебора массива (как и сказал kise97, с использованием assoc = true, т.е. получаем сразу массив, вместо объекта)
    PHP:
    $html file_get_contents('http://img.combats.com/auction/dump.js');
    $json json_decode(str_replace('var auction_dump='''$html), true);

    foreach (
    $json as $key=>$value) {
        if(
    $key 0)
            {
                echo 
    $value['name'].' ';
                echo 
    $value['txt'].' ';
                echo 
    $value['_auc']['id'].'<br>';
            }
    }
     
    Последнее редактирование: 24 дек 2014
    ZOLK и Dukuй нравится это.
  10. Dukuй

    Dukuй Щас сменю себе статус

    Регистр.:
    24 фев 2009
    Сообщения:
    296
    Симпатии:
    190
    В общем получилось вывести все данные в таблице:
    http://clan-mcats.ru/auc/index.php
    Появился еще такой вопросец, как прикрутить туда поиск по любому ключевому слову которое находится в таблице.
    Подскажите, в каком направлении двигаться?