HTML DOM 用点替换逗号

Posted

技术标签:

【中文标题】HTML DOM 用点替换逗号【英文标题】:HTML DOM replace Comma with a Dot 【发布时间】:2021-07-30 12:37:57 【问题描述】:

我使用的是 html DOM,这是代码:

<?php
include('simple_html_dom.php');
$html = file_get_html('https://www.funda.nl/beoordelingenwidget/live/16186/3/3%3d33%3b6%3d62/aankoop/');
echo $html->find(".user-reviews-averages-number", 0);
?>

输出是:9,4 但我希望它是 9.3

我试过这个:

<?php
include('simple_html_dom.php');
$html = str_replace(',', '.', $html);
$html = file_get_html('https://www.funda.nl/beoordelingenwidget/live/16186/3/3%3d33%3b6%3d62/aankoop/');
echo $html->find(".user-reviews-averages-number", 0);
?>

但这不起作用。谁能告诉我我需要做什么?

亲切的问候。

【问题讨论】:

将您的$html-&gt;find(..) 存储在一个变量中,并将str_replace() 存储在该变量中? ($html = str_replace(',', '.', $html); 不起作用,因为$html 将在下一行被覆盖) 【参考方案1】:

如果你只是使用...

echo $html->find(".user-reviews-averages-number", 0);

你的完整输出实际上是

<span class="user-reviews-averages-number is-high">                      9,<sup>4</sup>                  </span>

我也不确定为什么在获得 HTML 之前调用str_replace,但要正确执行此操作,您需要在获得所需元素后获取它。在这里,我在该节点上使用text() 来获取9,4,然后将, 替换为....

// Fetch the node itself
$raw = $html->find(".user-reviews-averages-number", 0);
// extract just the value
echo str_replace(",", ".", trim($raw->innertext()));

【讨论】:

谢谢,但我想保留 @RobMaathuis 我已将 text() 调用更改为 innertext() @RobMaathuis 如果这有帮助,请考虑将其标记为已回答 (meta.stackexchange.com/questions/5234/…)。

以上是关于HTML DOM 用点替换逗号的主要内容,如果未能解决你的问题,请参考以下文章

用点蚀替换逗号

如何用数字中的点替换逗号(或任何替换)[重复]

用点解析双精度为逗号

PHP用逗号和空格验证数字

以逗号作为小数分隔符的数据框

使用随机逗号或点分隔符从文件中解析双精度