这是一个类名为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”。
答案 0 :(得分:4)
您忘记将索引放在->find()
内。如果不提供索引,这将返回一个数组。当您放入索引(在本例中为0
)时,您将指向该类的第一个找到的元素。
$table = $html->find('.nick', 0);
// ^ this is important
echo $table;
混合查找(字符串$ 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);