Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (4)

Лучшие ответы пользователя

Все ответы (6)
  • Как копировать объект в JavaScript?

    @vit134
    а как Вам такой вариант? не уверен что он покрывает все возможные варианты, но объект копирует без сохранения ссылки
    const deepClone = (obj) => {
        let clone = {};
        for (let prop in obj) {
            if (typeof obj[prop] === 'object') {
                clone[prop] = deepClone(obj[prop]);
            } else {
                clone[prop] = obj[prop];
            }
        }
    
        return clone;
    }
    Ответ написан
    1 комментарий
  • Почему не работает функция Simple HTML DOM в цикле?

    @vit134
    почти та же проблема Call to a member function innertext() on null

    function getContent($url) {
        $html = new simple_html_dom();
        $html->load_file($url);
        $html->save();
    
        $table = $html->find('table.tb-matches');
    
        foreach ($table as $key => $value) {
           foreach ($value->find('tr') as $key => $tr) {
                $elem =  $tr->find('td', 0);
                echo 'key' . $key . '<br>';
                echo 'tr' . $tr . '<br>';
                echo $tr->find('td', 0)->attr['colspan'] . '----<br>';
            }
        }
    
    }
    foreach ($dateArr as $key => $dateVal) { 
        getContent($url . $dateVal); 
    }


    пробовал после foreach ($table as $key => $value) { добавлять $value = new simple_html_dom();
    ошибка стала появляться сразу, не выполняется даже первая итерация

    UPD

    решил проблему так: сначала добавляю контент всех страниц в переменную
    foreach ($dateArr as $key => $dateVal) {
            $out .=  file_get_contents($url . $dateVal) ;
    }

    и потом создаю объект simple_html_dom
    $html = new simple_html_dom();
        $html->load($out);
        $html->save();
    
        $table = $html->find('.list_table');
    
        foreach ($table as $key => $value) {
            $dd = $value->attr['date'];
    
            foreach ($value->find('table.tb-matches tr') as $key => $tr) {
    
                $elem =  $tr->find('td', 0);
    
                if ($elem->attr['colspan'] != '7') {
                    $resultArr[$dd][] = array(
                        'time' => $tr->find('td', 0)->plaintext,
                        'home_team' => $tr->find('td.home-team', 0)->plaintext,
                        'away_team' => $tr->find('td.away_team', 0)->plaintext,
                        'status' => trim($tr->find('td.status', 0)->plaintext),
                        'score' => $tr->find('td.score', 0)->plaintext,
                        'href' => 'http://goal24.ru' . $tr->find('td.option a', 0)->href,
                    );
                }
            }
        }


    PS
    Нашел еще один вариант решения

    в функции которая гоняется в цикле, заменить $html = new simple_html_dom() на $html = str_get_html(file_get_contents($url)). Результат на лицо.
    Ответ написан
    7 комментариев
  • Как узнать количество дней в месяце?

    @vit134
    Посмотрите хороший доклад об этом, https://www.youtube.com/watch?v=1DAmlRlEwCE&t=1883s. Там все очень подробно рассказывают о датах и календарях в частности
    Ответ написан
    1 комментарий