PHP Numarası Temizleyici RegEx

1 Cevap php

Ben sayılarla çalışmak için PHP kullanmak bir işlevi var. Niyet sıfıra null dönüştürmek, isteğe bağlı olarak, sayı temiz ve etmektir. Bu sql için hazırlık kullanmak benim için başladı, ama şimdi daha yerlerde kullanılır. İşte:

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;
}

Herkes, bunu yapmanın daha iyi bir yol daha hızlı herhangi bir fikir var mı? Bu regex yeterince basit ve gereken tüm davaları kapsayacak, ama ... Bir fark regex diğer önemsiz olmadan tüm aynı yapabilir, çalışır. Regex gücüm değil. Teşekkürler!

1 Cevap

Regex [^-0-9.0-9$] herhangi bir karakter eşleşir

  • bir tire
  • değil bir rakam
  • bir .
  • bir $

olması için gerek yoktur, iki 0-9 karakter sınıfında, bu nedenle etkili bir regex olduğunu: [^-0-9.$] veya [^-\d.$]