2010-10-19 19 views
1

我必須使用PHP來提取這個特定的HTML。因爲我還沒有任何類或唯一的ID我試圖用他的bgcolor ATTRIB但沒有成功......如何選擇一個​​通過他的bgcolor屬性使用PHP簡單的HTML DOM解析器

<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> 

這是代碼我試過:

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

什麼建議嗎?

+0

*(相關)* [最佳方法來解析HTML(http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662 ) – Gordon 2010-10-19 10:48:18

回答

1

解析成DOMDocument

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

然後挑元件(一個或多個),或者與普通DOM getElementsByTagName

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

或用XPath

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

thanx bobince,使用DOMDocument我發現了小寫問題... – cesko80 2010-10-19 13:15:58

0

終於得到它...

它也適用於simple_html_dom,只需使用總是小寫的html顏色代碼例如:#f5ec97。即使原始文檔中的顏色代碼是大寫字母,也不能使用大寫字母。

<?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

哦!所以它是simple_html_dom ...我*確實在想你從哪裏找到find()。這對我來說似乎是一個錯誤。 – bobince 2010-10-19 14:56:07

相關問題