Сплит средний отзывы php - PullRequest
0 голосов
/ 03 мая 2018

Я использую код для отображения среднего отзыва от amazon на мой сайт с кодом ASIN. Все работает отлично, но я просто хочу разделить «4.5» и «étoiles», чтобы показать только «4.5» число (см. Пример).

Как я могу это сделать?

    <?php
$url = 'hxxps://www.amazon.fr/gp/customer-reviews/widgets/average-customer-review/popover/ref=dpx_acr_pop_?contextId=dpx&asin=B01N05ZMTK';
$content = file_get_contents($url);
$first_step = explode( '<span class="a-size-base a-color-secondary">' , $content );
$second_step = explode("</span>" , $first_step[1] );
echo $second_step[1];
    ?>

Кстати, у вас есть решение для преобразования "4.5" в значки звездочек?

1 Ответ

0 голосов
/ 03 мая 2018

Во-первых, когда вы хотите извлечь что-то из структурированных данных, используйте структуру, а не прямой строковый подход. В вашем случае используйте классы DOMDocument и DOMXPath:

$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTMLFile($url);
$xp = new DOMXPath($dom);

$stars = explode(' ', ltrim($xp->evaluate('string(//span[@class="a-size-base a-color-secondary"])')))[0];
echo $stars;

Тогда вам нужно только обрезать и разделить строку, чтобы извлечь 4.5.

демо

Обратите внимание, что это также может быть полностью сделано с XPath:

$stars = $xp->evaluate('substring-before(normalize-space(//span[@class="a-size-base a-color-secondary"])," ")');
...