phpQuery从空标签获取attr

时间:2010-11-27 10:26:00

标签: phpquery

我有一个让我烦恼的问题。我正在使用cURL和phpQuery的组合从网页中获取一些内容。

在我正在提取的页面中,有以下代码可确定帖子评分:

<div class="post">
    <ul id="thumb_ul" class="star-rating" style="width:60px;">
        <li class="current-rating" style="width:0px;"></li>
    </ul>
</div>

我正在使用phpQuery,如下所示:

$pqD = phpQuery::newDocument($buffer);
foreach(pq('div.post') as $li) {
    $rating = pq($li)->find('ul > li.current-rating')->attr('style');
}

评分显然是在<li>标记的style标记中定义的。我想过用pq($li)->find('ul > li.current-rating')->attr('style')访问它,我希望得到width:0px。 评级定义如下:0-0,12-1,24-2,......,60-6。

然而,phpQuery似乎对空标签非常“感兴趣”。对于我从页面抓取的所有其他东西,它运作良好。

有什么想法吗? THX

1 个答案:

答案 0 :(得分:2)

<强>更新

完整测试来源:(复制和测试)

<?php
require_once('phpQuery/phpQuery.php');

$buffer = '
   <div class="post">
    <ul id="thumb_ul" class="star-rating" style="width:60px;">
        <li class="current-rating" style="width:0px;"></li>
         <li class="current-rating" style="width:6px;"></li>
          <li class="current-rating" style="width:8px;"></li>
    </ul>
</div>
';

$doc = phpQuery::newDocument($buffer);
foreach ($doc['.post ul li.current-rating'] as $li) {
  $rating .= pq($li)->attr('style');
    // or $rating[] .=  if you need an array()  
}

echo $rating; //ouput: width:0px;width:6px;width:8px;
?>