PHP Number Cleaner RegEx - PullRequest
       2

PHP Number Cleaner RegEx

2 голосов
/ 19 апреля 2010

У меня есть функция, которую я использую в PHP для работы с числами. Цель состоит в том, чтобы очистить число и, необязательно, преобразовать нули в ноль. Это началось для меня для использования в Prep для 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;
}

У кого-нибудь есть идеи относительно более быстрого и лучшего способа сделать это? Это работает, регулярное выражение достаточно просто и должно охватывать все случаи, которые мне нужны, но ... Дифференциальное выражение может делать то же самое без другого мусора Регекс не моя сила. Спасибо!

1 Ответ

3 голосов
/ 19 апреля 2010

Регулярное выражение [^-0-9.0-9$] соответствует любому символу,

  • не дефис
  • не цифра
  • не .
  • не $

нет необходимости иметь два 0-9 в классе char, поэтому эффективно ваше регулярное выражение: [^-0-9.$] или [^-\d.$]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...