如何在php中按类名获取html表元素

时间:2016-02-17 04:46:53

标签: php html simple-html-dom

这是一个类名为nick的表。我试图通过班级名称“nick”获得此表。

<table  class="nick">
              <tbody>
              <tr>

                <th> a  </th>
                <th>    b</th>
                <th> c  </th>
          </tr>
 <tr>
  <td>1</td>
  <td>2</td>
  <td>3</td>
 </tr>

        </tbody></table>    

这是代码。

    include_once('simple_html_dom.php');
    $html = file_get_html('http://www.example.com');

  $table = $html->find('.nick');
  echo $table . '<br>';

?>

当我通过标记名获取表时它可以工作,但是当我按类名获取它时,它会显示msg“数组到字符串转换”并返回“数组”。

我如何通过类缺口及其行和colom获取此表。还有两个表具有类名“nick”。

3 个答案:

答案 0 :(得分:4)

您忘记将索引放在->find()内。如果不提供索引,这将返回一个数组。当您放入索引(在本例中为0)时,您将指向该类的第一个找到的元素。

$table = $html->find('.nick', 0);
                           // ^ this is important
echo $table;

Reference:

  

混合查找(字符串$ selector [,int $ index])

     

通过CSS选择器查找元素。如果设置了index,则返回第N个元素对象,否则返回一个object数组。

当然,第一个表属于零指数(0),第二个表位于一个(1)。

如果您想加倍努力,如果您希望->find()方法不受影响,可以先检查是否有带有该类名称的表:

$table = $html->find('.nick');
if(count($table) > 0) { // if found
    echo $table[0]; // echo first table
} else {
    // not found
}

答案 1 :(得分:2)

你可以使用php中的类来获得正确的html,如下面的代码。

include_once('simple_html_dom.php');
$html = file_get_html('http://www.example.com');

$table = $html->find('table.nick');
//OR
$table = $html->find('table[class=nick]');
echo $table . '<br>';

答案 2 :(得分:1)

使用班级名称&amp;索引如下:

第一桌:

$table1 = $html->find('table[class=nick]', 0); 

第二桌:

$table2 = $html->find('table[class=nick]', 1);