0

我有这个 HTML 代码:

<span class="price">Price: <font class="rosu_12px_bold">2'099<sup>99</sup></font> EUR</span>

我设法提取了价格:2'09999

我无法捕捉 sup 标签并插入 .

现在,在我的数据库中,我只能存储实数

提取的值不是数字,因此在尝试插入此值时我得到 0 值。

我只能这样插入:2099.99

我永远不知道我提取的值是什么样的,所以我需要一个解决方案来格式化它。

4

2 回答 2

4

试试这个:

<?php
    $abc="2'099";
    echo preg_replace('/[^0-9]/i', '', $abc);
    ?>

编辑:请记住,这也将替换句点(。)。

另一个编辑:您可以使用 strip 标签来去除 html 标签

<?php
$abc="<font class='rosu_12px_bold'>2'099<sup>99</sup></font>";
echo preg_replace('/[^0-9.]/i', '', strip_tags($abc));
?>

编辑:但是 sup 标签之间的 99 可能表示货币的较低面额可能是 99 美分。在这种情况下,上面的示例将不起作用。

还有一个编辑,在使用条形标签之前,您可以用句点(。)替换 sup 标签,然后使用条形标签,如果您想保持货币的较低面额。

希望这可以帮助

于 2012-08-10T07:59:40.343 回答
0

我只得到类似1'234991.999891'345'991'234.99或其他格式的字符串。

问题是如何获得 99 美分?

这些值涉及以下字符:

0 1 2 3 4 5 6 7 8 9 . , '

以任何可能的组合

我的解决方案是:

  1. 0 - 9.)替换所有不是数字的东西

  2. 解析字符串,从位置 0 到 strlen-1,从第一个.)的位置开始,尝试插入 3 到 3 个字符.)。如果已到达字符串的末尾,请避免插入 .

  3. 查找插入 的最后一个..)的位置并删除所有其他()。

结果应该是数字 1234.99。

于 2012-08-10T08:56:23.223 回答