Получить данные при сравнении времени - PullRequest
0 голосов
/ 04 мая 2018

Я работаю над функцией подключения к сайту каждый день, чтобы получить нужные данные. Я хочу найти время в источнике html, совпадающее с моим текущим временем, поэтому после этого я хочу получить данные.

Вот код:

function get_shows($channel_id, $day, $skip_finished = true) 
{
   global $day;

   $url = 'http://example.com/api/GS?cid=' . $channel_id . '&offset=+00.00&day=' .$day;

   $curl = curl_init();
   curl_setopt_array($curl, array(
        CURLOPT_USERAGENT => '',
        CURLOPT_TIMEOUT => 30,
        CURLOPT_CONNECTTIMEOUT => 30,
        CURLOPT_HEADER => false,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_MAXREDIRS => 5,
        CURLOPT_URL => $url,
    ));

    $html = curl_exec($curl);
    curl_close($curl);

    // create domdocument from html retrieved
    $doc = new DOMDocument();
    $doc->preserveWhiteSpace = false;
    @$doc->loadHTML($html);
    $xpath = new DOMXPath($doc);
    }
    ?>

Вот вывод для $ html:

["<a style='width: 149px;' data-time='6:00 pm' <i class=\"c-icon c-8\" >
</i> UEFA Europa League Highlights </h2> <h3>Highlights of all matches in the UEFA Europa League.
<span  >7.0</span></h3></a><a style='width: 149px;' data-time='6:30 pm' <h2><i class=\"c-icon c-8\" >
</i> UEFA Europa League Highlights </h2> <h3>Highlights of all matches in the UEFA Europa League.<span  >7.0</span></a>"]

Если мое текущее время показывает 18:30, я хочу найти время 6:30 pm в источнике html, чтобы оно совпадало или превышало его, поэтому я могу получить данные, которые начинаются с 6:30 pm, чтобы пройти весь путь до конца но я понятия не имею, как это сделать.

Не могли бы вы показать мне пример того, как я могу найти время, используя запрос $ xpath, чтобы я мог получить нужные данные с помощью тегов html?

EDIT:

Вот например:

Если мое время показывается в 18:30, тогда я хочу получить тег, чтобы он выглядел так:

6:30 pm

UEFA Europa League Highlights
Highlights of all matches in the UEFA Europa League.

1 Ответ

0 голосов
/ 04 мая 2018

не совсем уверен, что вы спрашиваете. Вы можете взорваться и взорваться несколько раз, чтобы получить искомый сегмент.

$html = ["<a style='width: 149px;' data-time='6:00 pm' <i class=\"c-icon c-8\" >
</i> UEFA Europa League Highlights </h2> <h3>Highlights of all matches in the UEFA Europa League.
<span  >7.0</span></h3></a><a style='width: 149px;' data-time='6:30 pm' <h2><i class=\"c-icon c-8\" >
</i> UEFA Europa League Highlights </h2> <h3>Highlights of all matches in the UEFA Europa League.<span  >7.0</span></a>"];

$htotal=implode("<a",$html);
$harray=explode("'6:30 pm'",$htotal);
$hhalf = $harray[count($harray)-1];
$hspecific = explode("</a",$hhalf);

echo $hspecific[0];

даст вам:

<h2><i class="c-icon c-8" >
</i> UEFA Europa League Highlights </h2> <h3>Highlights of all matches in 
the UEFA Europa League.<span  >7.0</span>

если это действительно то, что вы ищете, я бы взорвал 'data-time =', а затем выполнил бы подстроку поиска нужного времени в цикле по массиву. Я думаю, что это чище и легче следовать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...