php中数字货币类型验证函数

  1. function is_number( $str )
  2. {
  3. if ( substr( $str, 0, 1 ) == "-" )
  4. {
  5. $str = substr( $str, 1 );
  6. }
  7. $length = strlen( $str );
  8. $i = 0;
  9. for ( ; $i < $length; ++$i )
  10. {
  11. $ascii_value = ord( substr( $str, $i, 1 ) );
  12. if ( 48 <= $ascii_value && $ascii_value <= 57 )
  13. {
  14. continue;
  15. }
  16. return FALSE;
  17. }
  18. if ( $str != "0" )
  19. {
  20. $str = intval( $str );
  21. if ( $str == 0 )
  22. {
  23. return FALSE;
  24. }
  25. }
  26. return TRUE;
  27. }
  28. function is_decimal( $str )
  29. {
  30. if ( substr( $str, 0, 1 ) == "-" )
  31. {
  32. $str = substr( $str, 1 );
  33. }
  34. $length = strlen( $str );
  35. $i = 0;
  36. for ( ; $i < $length; ++$i )
  37. {
  38. $ascii_value = ord( substr( $str, $i, 1 ) );
  39. if ( 0 < $i && $ascii_value == 46 || 48 <= $ascii_value && $ascii_value <= 57 )
  40. {
  41. continue;
  42. }
  43. return FALSE;
  44. }
  45. return TRUE;
  46. }
  47. function is_money( $str )
  48. {
  49. $dot_pos = strpos( $str, "." );
  50. if ( !$dot_pos )
  51. {
  52. return FALSE;
  53. }
  54. $str1 = substr( $str, 0, $dot_pos );
  55. if ( 14 < strlen( $str1 ) )
  56. {
  57. return FALSE;
  58. }
  59. if ( !is_number( $str1 ) )
  60. {
  61. return FALSE;
  62. }
  63. $str2 = substr( $str, $dot_pos + 1, strlen( $str ) - $dot_pos );
  64. if ( strlen( $str2 ) != 2 )
  65. {
  66. return FALSE;
  67. }
  68. if ( !is_number( $str2 ) )
  69. {
  70. return FALSE;
  71. }
  72. return TRUE;
  73. }
  74. function is_money_len( $str, $int_len, $dot_len )
  75. {
  76. $dot_pos = strpos( $str, "." );
  77. if ( !$dot_pos )
  78. {
  79. return FALSE;
  80. }
  81. $str1 = substr( $str, 0, $dot_pos );
  82. if ( $int_len < strlen( $str1 ) )
  83. {
  84. return FALSE;
  85. }
  86. if ( !is_number( $str1 ) )
  87. {
  88. return FALSE;
  89. }
  90. $str2 = substr( $str, $dot_pos + 1, strlen( $str ) - $dot_pos );
  91. if ( strlen( $str2 ) != $dot_len )
  92. {
  93. return FALSE;
  94. }
  95. if ( !is_number( $str2 ) )
  96. {
  97. return FALSE;
  98. }
  99. return TRUE;
  100. }