繁体   English   中英

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

[英]phpQuery - Get data from table with no class or id

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

表结构是这样的:

<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库,但是我确实掌握了基础知识,我只是无法解决这个问题。

我还没有测试过,但是也许是这样?

$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");

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM