Как выбрать <td>по его атрибуту bgcolor, используя PHP простой html dom-парсер - PullRequest
1 голос
/ 19 октября 2010

Я должен извлечь этот конкретный HTML с помощью PHP. Поскольку у меня нет ни класса, ни уникального идентификатора, я попытался использовать его атрибут bgcolor, но безуспешно ...

<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]');

Есть предложения?

Ответы [ 2 ]

1 голос
/ 19 октября 2010

Разобрать в 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 голосов
/ 19 октября 2010

наконец получил это ...

Он также работает с simple_html_dom, просто используйте всегда строчные буквы в HTML-коде цвета ex: # 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; 

    }

?>

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