phpQuery получает атрибут из пустого тега - PullRequest
2 голосов
/ 27 ноября 2010

У меня есть проблема, которая сильно меня раздражает. Я собираю некоторый контент с веб-страницы, используя комбинацию 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 Ответ

2 голосов
/ 05 декабря 2010

UPDATE:

ИСТОЧНИК ПОЛНОГО ИСПЫТАНИЯ: (копирование и тестирование)

<?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;
?>
...