2014-04-28 6 views
-1

Je travaille sur mon PHP pour obtenir la liste des URL. J'utilise domdocument pour obtenir la liste des URL que j'ai pour l'entrée et je veux envoyer la requête à chaque URL pour obtenir les chaînes de retour.Erreur fatale capturable: Objet de la classe DOMNodeList n'a pas pu être converti en chaîne

Quand j'ai essayé ceci:

if($link->getAttribute('href')) 
    { 
    if(!$link->hasAttribute('id') || $link->getAttribute('id')!='streams') 
    { 
     $url = str_replace("rtmp://", "", $link->getAttribute('href')); 
     $url = str_replace(" ", "%20", $link->getAttribute('href')); 
     echo $url; 
     echo "<br>"; 
     $sdoc = new DOMDocument(); 
     $sdoc->strictErrorChecking = false; 
     $sdoc->recover=true; 
     @$sdoc->loadHTMLFile($url); 
     $spans = $sdoc->getElementsByTagName('span'); 
     echo $spans; 
    } 
    } 

j'obtenir ceci: Catchable erreur fatale: objet de la classe DOMNodeList ne pouvait être convertie en chaîne.

L'erreur sautent sur cette ligne:

echo $spans; 

Voici la liste des chaînes de temps pour chaque URL que je veux analyser:

<span id="time1">4:00 PM</span> - 
<span id="time2">4:30 PM</span> 
<span id="time3">5:00 PM</span> 
<span id="time4">5:30 PM</span> 
<span id="time5">6:00 PM</span> 

Voici le code:

<?php 
ini_set('max_execution_time', 300); 
$errmsg_arr = array(); 
$errflag = false; 

$xml .= '<?xml version="1.0" encoding="UTF-8" ?>'; 
$xml .= ' 
<tv generator-info-name="www.mysite.com/xmltv">'; 

$baseUrl = file_get_contents('http://http://www.mysite.com/get-listing.php'); 

$domdoc = new DOMDocument(); 
$domdoc->strictErrorChecking = false; 
$domdoc->recover=true; 
//@$domdoc->loadHTMLFile($baseUrl); 
@$domdoc->loadHTML($baseUrl); 

//$links = $domdoc->getElementsByTagName('test'); 
//$links = $domdoc->getElementById('test'); 
$links = $domdoc->getElementsByTagName('a'); 

$data = array(); 
foreach($links as $link) 
{ 
    //echo $link->getAttribute('id, test'); 
    //echo $test; 


    //echo $domdoc->saveXML($link); 
    if($link->getAttribute('href')) 
    { 
    if(!$link->hasAttribute('id') || $link->getAttribute('id')!='streams') 
    { 
     $url = str_replace("rtmp://", "", $link->getAttribute('href')); 
     $url = str_replace(" ", "%20", $link->getAttribute('href')); 
     echo $url; 
     echo "<br>"; 
     $sdoc = new DOMDocument(); 
     $sdoc->strictErrorChecking = false; 
     $sdoc->recover=true; 
     @$sdoc->loadHTMLFile($url); 
     $spans = $sdoc->getElementsByTagName('span'); 
     $query = parse_url($url)['query']; 
     $url_split = explode("&", $query)[0]; 
     $channel = urldecode(explode("=",$url_split)[1]); 

     foreach($spans as $span) 
     { 
     $id = $span->getAttribute('time1'); 
     //echo $id; 
     } 
    } 
    } 
} 
?> 

Pouvez-vous s'il vous plaît me dire pourquoi je reçois l'erreur fatale catachable et comment je peux faire écho pour les chaînes de temps?

Répondre

1

Son pas évident les valeurs que vous essayez de recevoir, mais si ses temps, vous pouvez utiliser node->nodeValue:

foreach($spans as $span) 
    { 
    echo $span->nodeValue;  
    } 
1

Parce que vous obtenez une liste de retour, et il faut le traverser. Essayez ceci:

for ($i = 0; $i < $spans->length; $i++) { 
    echo $spans->item($i)->nodeValue . "\n"; 
} 

et de voir si cela ne vous aide pas à obtenir ce que vous cherchez.

Vous pouvez aussi utiliser foreach:

foreach ($spans as $time) { 
    echo $time->nodeValue . "\n"; 
} 

Ref: http://www.php.net/manual/en/domnodelist.item.php

+0

Merci les gars, il fonctionne parfaitement !!! –

Questions connexes