【问题标题】:Split average reviews php拆分平均评论 php
【发布时间】:2018-05-03 12:11:31
【问题描述】:

我正在使用代码显示从亚马逊到我的网站的平均评论以及 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”转换成“4.5”吗?

【问题讨论】:

  • 你为什么要标记preg_match?你似乎没有使用regex
  • 我不知道,我认为 preg_match 是解决方案...你能帮我用正则表达式吗?
  • 输入字符串是什么?请提供一个测试用例以及您尝试获取该值的方法。
  • 此代码给我“4.5 étoiles sur 5”我只想显示“4.5”数字。

标签: php amazon


【解决方案1】:

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

demo

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    相关资源
    最近更新 更多