PHP格式字符串到数字

时间:2012-08-10 07:51:51

标签: php

我有这个HTML代码:

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

我设法提取价格:2'09999

我无法抓住sup标签并插入一个。

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

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

我只能这样插入:2099.99

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

2 个答案:

答案 0 :(得分:4)

试试这个:

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

编辑: 请记住,这也将取代句点(。)。

又一个编辑:您可以使用条带标记去除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标签,然后使用strip_tags,如果您想保持货币的较低面额。

希望这有帮助

答案 1 :(得分:0)

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

问题是如何获得99美分?

参与这些值的是以下字符:

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

可能的任何组合

我的解决方案是:

  1. 使用 0 - 9 dot

  2. 替换不是数字.的所有内容
  3. 解析字符串,从位置0到strlen-1,从找到第一个 . dot )的字符串,从3到3个字符会尝试插入 . dot )。如果已到达字符串的末尾,请避免插入。

  4. 找到最后 . dot )的位置并删除所有其他 . dot )s。

  5. 结果应为1234.99。