php
  • html
  • xpath
  • 2016-06-18 2 views 0 likes 
    0

    Мне нужна помощь с моим кодом. Я хочу анализировать каждый элемент из тегов потоков, но я не могу узнать, как я могу это сделать.Элементы анализа из href tags

    Когда я пытаюсь это:

    $streams_url = $xpath->query("//span[@id='streams'"]); 
    

    я получить что-то вроде этого:

    serverip page isn’t working 
    
    serverip is currently unable to handle this request. 
    
    HTTP ERROR 500 
    

    Вот PHP:

    <?php 
    ini_set('max_execution_time', 300); 
    $errmsg_arr = array(); 
    $errflag = false; 
    
    function getState($string) 
    { 
        $ex = explode(" ",$string); 
        return $ex[1]; 
    } 
    
    $baseUrl = file_get_contents('http://myserverip/get-listing.php'); 
    
    $domdoc = new DOMDocument(); 
    $domdoc->strictErrorChecking = false; 
    $domdoc->recover=true; 
    @$domdoc->loadHTML($baseUrl); 
    $links = $domdoc->getElementsByTagName('a'); 
    $i = 0; 
    $count = 0; 
    $streams_url = $xpath->query("//span[@id='streams'"]); 
    echo $streams_url; 
    
    $data = array(); 
    >? 
    

    Вот HTML данных:

    <a id="link1" href="http://myserverip/getlisting.php?channel=skyatlantic">http://myserverip/getlisting.php?channel=Sky Atlantic&id=108</a><br><br><a id="streams" href="rtmp://www.testserver.com/skyatlantic">Stream 1</a> 
    

    Вот что я хочу добиться:

    http://www.testserver.com/stream01 
    

    Я хочу, чтобы разобрать каждый элемент из тегов потоков.

    Не могли бы вы показать мне, как я могу это сделать в PHP?

    +0

    попробовать PHPQuery https://github.com/punkave/phpQuery – ArtisticPhoenix

    +1

    Я не использую PHPQuery, я хочу использовать свой собственный код, как это работает хорошо, но есть что-то которые не выглядели хорошо. Я узнал, что ошибаюсь. В '

    ответ

    0

    Поскольку у вас есть id, который вы ищете, вам фактически не нужно использовать XPath. Это сделает работу:

    $el = $domdoc->getElementById('streams'); 
    $url = $el->getAttribute('href'); 
    

    В комментариях вы упоминаете у вас есть повторяющиеся id значения: это недопустимый HTML. Но вы могли бы обработать их следующим образом:

    $streams_url = $xpath->query("//*[@id='streams']"); 
    foreach($streams_url as $a) { 
        $url[] = $a->getAttribute("href"); 
    } 
    print_r($url); // array of href values 
    
    +0

    Thank you very much for this, I can see this one is works great '$url = $el->getAttribute('href');', how i can parse each element from each streams tag as i have got two different hyderlink in my html page?? –

    +0

    ID values must be unique in HTML. So how can you have more of them? – trincot

    +0

    I have more of them using the same ID where you can see this: 'Stream 1' 'Stream 1' 'не существует диапазона '.etc –

     Смежные вопросы

    • Нет связанных вопросов^_^