$value = preg_replace("/[^0-9]+/", '', $value);
我怎么能编辑这个正则表达式来摆脱小数点后的所有内容?可能有也可能没有小数点。
目前“100.1”变为1001但应该是100。
完成功能:
function intfix($value)
{
$value = preg_replace("/[^0-9]+/", '', $value);
$value = trim($value);
return $value + 0;
}
它用于格式化数字的用户输入以及服务器输出以格式化数字的数字。函数处理非常大的数字,所以我不能使用intval或类似的。欢迎提出任何改进此功能的额外评论。
答案 0 :(得分:1)
您需要一个以小数位开始搜索的模式。目前,您只是删除了.
而不是其后的数字......所以您可以'/\.[\d]+/'
$text = "1201.21 12 .12 12.21";
$text = preg_replace('/\.[\d]+/', '' ,$text);
以上代码会产生$text = "1201 12 12"
答案 1 :(得分:1)
您只需将正则表达式更改为/[^0-9].*/s
。
.*
匹配零个或多个字符,因此第一个不是数字的字符和紧随其后的数字将被删除。
答案 2 :(得分:0)
为什么不$value = round($value, 0);
?这可以处理大值,并且意味着以数学方式去除以下小数(我宁愿使用数字作为数字而不是字符串)。如果您想要删除小数PHP_ROUND_HALF_DOWN
- >,您可以将10.7
作为第三个参数传递10
。或floor($value);
也可以。