2

我有一个让我非常恼火的问题。我正在使用 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 似乎对空标签非常“感兴趣”。对于我从页面中获取的所有其他内容,它运行良好。

有任何想法吗?谢谢

4

1 回答 1

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;
?>
于 2010-12-05T10:35:30.253 回答