Извлечение имени класса с помощью DomCrawler - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь почистить отзыв от 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.

Iесть пара вопросов.Во-первых, как я могу извлечь номер из имени класса, чтобы я мог определить рейтинг?

Во-вторых, если я удаляю первый и второй фильтр, я получаю, что текущий список узлов пуст.Есть ли причина для этого?

ps первый фильтр для родительского div, который я не показал, но он существует.

Спасибо

...