我有这个HTML代码:
<span class="price">Price: <font class="rosu_12px_bold">2'099<sup>99</sup></font> EUR</span>
我设法提取价格:2'09999
我无法抓住sup标签并插入一个。
现在,在我的数据库中,我只能存储实数
提取的值不是数字,因此在尝试插入此值时,我得到0值。
我只能这样插入:2099.99
我永远不知道我的提取值是什么样的,所以我需要一个解决方案来格式化它。
答案 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'23499
或1.99989
或1'345'99
或1'234.99
或其他格式的字符串。
问题是如何获得99美分?
参与这些值的是以下字符:
0 1 2 3 4 5 6 7 8 9 . , '
可能的任何组合
我的解决方案是:
使用 0 - 9
( dot )
.
的所有内容
解析字符串,从位置0到strlen-1,从找到第一个 .
( dot )的字符串,从3到3个字符会尝试插入 .
( dot )。如果已到达字符串的末尾,请避免插入。
找到最后 .
( dot )的位置并删除所有其他 .
( dot )s。
结果应为1234.99。