PHP号码清洁RegEx

时间:2010-04-19 15:35:54

标签: php regex

我有一个在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;
}

有没有人对更快,更好的方法有任何想法?它的工作原理,正则表达式很简单,应该涵盖我需要的所有情况,但是...一个diff正则表达式可能会做所有相同的没有其他垃圾。正则表达不是我的力量。谢谢!

1 个答案:

答案 0 :(得分:3)

正则表达式[^-0-9.0-9$]匹配任何

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

char类中不需要两个0-9,所以你的正则表达式有效:[^-0-9.$][^-\d.$]