假设我们有两个不同格式的价格字符串:
$s_price = '85.95' or '1500.00'
$r_price = '$ 85.95' or '1,500'
Run Code Online (Sandbox Code Playgroud)
但所有这些价格都是相同的并且应该匹配。
我有一个正则表达式可以做到这一点,但不知道我们是否这样做:
(\d+)*(,)?\d+(.)?\d*
Run Code Online (Sandbox Code Playgroud)
要从 PHP 中的字符串检索并解析浮点数,请使用该floatval()方法。
对于符号,这取决于您是否始终对货币使用相同的约定(逗号表示千位分隔符,点表示小数)。在这种情况下,您应该使用该方法删除除点之外的非数字preg_replace()(相应的正则表达式可以是/[^0-9.]/)
<?php
function sanitize($price) {
return floatval(preg_replace('/[^0-9.]/', '', $price));
}
$a1 = '85.95';
$a2 = '1500.00';
$b1 = '$ 85.95';
$b2 = '1,500';
sanitize($a1); // (float) 85.95
sanitize($a2); // (float) 1500
sanitize($b1); // (float) 85.95
sanitize($b2); // (float) 1500
sanitize($a1) === sanitize($b1); // (bool) true
sanitize($a2) === sanitize($b2); // (bool) true
sanitize($a1) <= sanitize($a2); // (bool) true
sanitize($b1) >= sanitize($b2); // (bool) false
Run Code Online (Sandbox Code Playgroud)
希望它会有所帮助!
| 归档时间: |
|
| 查看次数: |
365 次 |
| 最近记录: |