phpQuery - 从没有类或id的表中获取数据

时间:2012-04-02 12:20:09

标签: php phpquery

我正在尝试从表中获取一些数据,其中标记没有id,类或任何其他可以识别它的属性。

表格结构如下:

<table>
<tr>
    <td><b>Type</b></td>
    <td>Plug and Play</td>
</tr>
<tr>
    <td><b>Model</b></td>
    <td>AH591Z</td>
</tr>
<tr>
    <td><b>Date</b></td>
    <td>02.04.2012</td>
</tr>
<tr>
    <td><b>Name</b></td>
    <td>CryptMachine</td>
</tr>
<tr>
    <td><b>ID</b></td>
    <td>9283</td>
</tr>
</table>

我将如何获取模型,名称和ID但忽略日期和类型,因为我不需要这些值。

使用phpQuery有一种聪明的方法吗?到目前为止,我刚刚使用了phpQuery库,但我确实已经掌握了基础知识,我无法将我的大脑包围起来。

1 个答案:

答案 0 :(得分:1)

我没有测试过这个,但是这样的事情可能会吗?

$doc = phpQuery::newDocumentHTML($theDocument);
$table = $doc["table"];
$model = pq($table)->find("tr:eq(1) td:eq(1)")->text();
$id = pg($table)->find("tr:eq(4) td:eq(1)")->text();

如果页面上有多个table,您可能必须使用eq(n)来指定哪一个,记住它们是从0枚举,而不是1。

更新:如果你不知道行的顺序,你可以使用这样的东西(再次,未经测试,抱歉,但应该指向正确的方向)

<?php

function getValue($table, $label) {
    $lable = strtolower($label);
    $rows = pq('tr', $table);

    foreach($rows as $row):
        if ( strtolower(pq($row)->find('td:eq(0)').text() ) === $label ):
            return pq($row)->find('td:eq(1)').text();
        endif;
    endforeach;
}

$doc = phpQuery::newDocumentHTML($theDocument);
$table = $doc["table"];

$model = getValue($table, "Model");
$id = getValue($table, "ID");

?>