拆分平均评论 php

Split average reviews php

我正在使用代码显示亚马逊对我的网站的平均评论以及 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”改成这样吗?

首先,当您想从结构化数据中提取内容时,请使用结构而不是直接的字符串方法。在您的情况下使用 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;

那你只需要trim然后拆分字符串就可以提取4.5.

demo

请注意,它也可以完全用 XPath 完成:

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