代码之家  ›  专栏  ›  技术社区  ›  hummingBird

phpQuery从空标签获取attr

  •  2
  • hummingBird  · 技术社区  · 14 年前

    我有一个很让我恼火的问题。我正在使用curl和phpguery的组合从网页中获取一些内容。

    在我正在获取的页面中,有以下代码决定了后评级:

    <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似乎对空标签不太感兴趣。对于我从页面上抓取的每一件事,它都很好地工作。

    有什么想法吗? 谢谢

    1 回复  |  直到 7 年前
        1
  •  2
  •   Luca Filosofi    14 年前

    更新:

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

    <?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;
    ?>
    
    推荐文章