清理可能包含美元符号、连字符和点的数字

问题描述 投票:0回答:1

我在 PHP 中使用一个函数来处理数字。 目的是清理数字,并可选择将空值转换为零。 它开始对我来说是用于准备 sql,但现在用于更多地方。 这是:

function clean_num ($num, $null_to_zero = true) {
  $num = preg_replace("/[^-0-9.0-9$]/","",$num);
  if (strlen($num) == 0)
    $num = ($null_to_zero) ? 0 : null;
  else if (strlen($num) == 1 && ($num == '-' || $num == '.'))
    $num = ($null_to_zero) ? 0 : null;
  return $num;
}

有人对更快、更好的方法有任何想法吗? 它有效,正则表达式足够简单,应该涵盖我需要的所有情况,但是......不同的正则表达式可能会做同样的事情,而无需其他垃圾。

php regex numeric sanitization
1个回答
3
投票

正则表达式

[^-0-9.0-9$]
匹配任何字符

  • 不是连字符
  • 不是数字
  • 不是
    .
  • 不是
    $

在 char 类中不需要有两个

0-9
,因此有效的正则表达式是:
[^-0-9.$]
[^-\d.$]

© www.soinside.com 2019 - 2024. All rights reserved.