2010-10-19 13 views
1

Je dois extraire ce code HTML particulier en utilisant PHP. Depuis que je n'ai pas d'ID de classe unique ou j'ai essayé d'utiliser son attrib bgcolor mais sans succès ...Comment sélectionner un <td> par son attribut bgcolor en utilisant PHP simple html dom parser

<td bgcolor="#F5EC97" width="154" valign="top" align="left" height="55"> 
      <font face="Verdana, Arial, Helvetica, sans-serif" size="1"><b><font color="#CC6633">CITY</font></b><br> 
       <b>xyz</b><br> 
       xyz<br> 
       Tel. 555/22327<br> 
       &nbsp; 

    </td> 

c'est le code que j'ai essayé:

$res = $html->find('td[bgcolor=#F5EC97]'); 

Toute suggestion?

+0

* (liés) * [meilleures méthodes pour analyser HTML] (http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662) – Gordon

Répondre

1

Parse en DOMDocument:

$doc= new DOMDocument(); 
$doc->loadHTML($html); 

Ensuite, choisissez l'élément (s), soit avec DOM plaine getElementsByTagName:

foreach ($doc->getElementsByTagName('td') as $td) { 
    if ($td->getAttribute('bgcolor')=='#F5EC97') { 
     // do something with $td 
    } 
} 

Ou avec XPath:

$xpath= new DOMXpath($doc); 
foreach ($xpath->query("//td[@bgcolor='#F5EC97']") as $td) { 
    // do something with $td 
} 
+0

thanx bobince, en utilisant DOMDocument J'ai découvert le problème en minuscules ... – cesko80

0

a finalement obtenu il ...

Il fonctionne aussi avec simple_html_dom, il suffit d'utiliser toujours minuscule en code couleur html ex: # f5ec97. Ne fonctionne pas en majuscules, même si le code de couleur du document d'origine est en majuscules.

<?php 

    require_once("simple_html_dom.php"); 

    $html = file_get_html('pharma/w_43.htm'); 
    foreach($html->find('td[bgcolor=#f5ec97]') as $article){ 
     echo $article->innertext; 

    } 

?>

+0

Oh! Donc c'est simple_html_dom ... Je * me * demandais d'où vous teniez 'find()'. Cela semble être un bug pour moi. – bobince