使用DomCrawler提取类名称

时间:2018-10-03 15:22:21

标签: php domcrawler

我正试图从Trustpilot取得一个评分。 HTML块看起来像这样

<div class="review-info__header" v-pre="">
    <div class="review-info__header__verified">
        <div class="star-rating star-rating-1 star-rating--medium">
            <div class="star-item star-item--color">
                <img src="https://cdn.trustpilot.net/brand-assets/1.3.0/single-star-transparent.svg" alt="Star 1">
            </div>
            <div class="star-item star-item--color">
                <img src="https://cdn.trustpilot.net/brand-assets/1.3.0/single-star-transparent.svg" alt="Star 2">
            </div>
            <div class="star-item star-item--color">
                <img src="https://cdn.trustpilot.net/brand-assets/1.3.0/single-star-transparent.svg" alt="Star 3">
            </div>
            <div class="star-item star-item--color">
                <img src="https://cdn.trustpilot.net/brand-assets/1.3.0/single-star-transparent.svg" alt="Star 4">
            </div>
            <div class="star-item star-item--color">
                <img src="https://cdn.trustpilot.net/brand-assets/1.3.0/single-star-transparent.svg" alt="Star 5">
            </div>
        </div>
    </div>
</div>

我可以通过star-rating-1类来评价等级,最后一部分表示等级5。

我正在使用DomCrawler。因此,我基本上将HTML放入变量中。然后我要尝试

$rating = $review->filter('.review-info__header')->filter('.star-rating')->filterXPath('div[contains(@class, "star-rating-")]');

如果我随后输出此节点的HTML,则$rating->html()可以看到它在输出内部HTML的正确位置。

我有几个问题。首先,如何从班级名称中提取数字,以便确定评分?

第二,如果删除第一个和第二个过滤器,则当前节点列表为空。有这个原因吗?

p.s。第一个过滤器用于我未显示的父div,但它存在。

谢谢

0 个答案:

没有答案