2011-05-13 86 views
3

我使用phpQuery从元素中获取数据。从每个td获取值

我试图从第一个td,秒tdhref链接从每个tr链接的值。

<table> 
    <tr class="A2"> 
    <td> Text 1 </td> 
    <td> Text 2 </td> 
    <td> Text 3 </td> 
    <td> <a href="linkhere1"> Text 131</a> </td> 
    </tr> 
    <tr class="A2"> 
    <td> Text 4 </td> 
    <td> Text 5 </td> 
    <td> Text 6 </td> 
    <td> <a href="linkhere2"> Text 123213</a> </td> 
    </tr> 
    <tr class="A2"> 
    <td> Text 7 </td> 
    <td> Text 8 </td> 
    <td> Text 9 </td> 
    <td> <a href="linkhere3.php"> Text 213213 </a> </td> 
    </tr> 
</table> 

如何做到这一点?我曾尝试:

<? 
require('phpQuery.php'); 

$file = file_get_contents('test.txt', true); 

$html = phpQuery::newDocument($file); 

foreach($html->find('.A2') as $tag) {           
    echo pq('td'); // problem here? 
} 
?> 
+0

pq()来自哪里 – Ibu 2011-05-13 15:35:07

回答

9

我猜你有他们交换..

foreach(pq('.A2') as $tag) { 
    $tds = pq($tag)->find('td'); 
} 

要想从每个TD的值,你可以在这里面进行迭代:

foreach(pq('.A2') as $tag) { 
    foreach(pq($tag)->find('td') as $td) { 
     // stuff 
    } 
} 
+1

致命错误:调用未定义的方法DOMElement :: find() – user622378 2011-05-13 15:30:45

+0

我在迭代它们时忘记了它们是纯DOMNode。你必须再次用'pq()'包装。 – Thai 2011-05-13 15:34:06

+0

非常非常非常好...! – 2014-06-09 12:13:41

2

pq()将返回匹配的节点列表(您<td>标签,在这种情况下)。你必须遍历该列表:

foreach(pq('td') as $td) { 
    ... do something ... 
} 
+0

如何从列表中获得第一个td和第二个td?和价值? – user622378 2011-05-13 15:24:39