Verify.class.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace KIF;
  3. /**
  4. * 封装了一些验证数据的方法
  5. * @author gaoxiaogang@gmail.com
  6. *
  7. */
  8. class Verify {
  9. /**
  10. * 验证 $email 是否有效
  11. *
  12. * @param string $email
  13. * @return Boolean
  14. */
  15. static public function email($email) {
  16. return (boolean) filter_var($email, FILTER_VALIDATE_EMAIL);
  17. }
  18. /**
  19. * 验证是否是整数。
  20. * 1、支持正、负整数
  21. * 2、支持字数串表示法。如:'-200'、'125'。
  22. * 原由:php的is_int方法只能判断数值型变量,纯数字的字符串认为不是整数。但实际应用时,纯数字的字符串需要被当成整数来处理。
  23. * @param mixed $str
  24. * @return boolean
  25. */
  26. static function int($str) {
  27. if (!is_scalar($str)) return false;
  28. # 修正bug。否则当$str === true时,该函数返回true:问题出在preg_match函数。
  29. if (is_bool($str)) {
  30. return false;
  31. }
  32. return (boolean) preg_match('#^\-?\d+$#', $str);
  33. }
  34. /**
  35. * 验证是否是正整数。即大于0的整数
  36. *
  37. * @param mixed $str
  38. * @return boolean
  39. */
  40. static function unsignedInt($str) {
  41. return (self::int($str) && $str > 0);
  42. }
  43. /**
  44. * 验证是否自然数。即大于等于0的整数
  45. *
  46. * @param mixed $str
  47. * @return boolean
  48. */
  49. static function naturalNumber($str) {
  50. return (self::int($str) && $str >= 0);
  51. }
  52. /**
  53. * 验证是否有效的金额。即不超出2位的浮点数
  54. * @param float $money
  55. * @return boolean
  56. */
  57. static function money($money) {
  58. return (boolean) preg_match('#^\d+(\.\d{1,2})?$#', $money);
  59. }
  60. /**
  61. * 验证 $ip 是否有效的ipv4地址
  62. * FILTER_FLAG_IPV4 - 要求值是合法的 IPv4 IP(比如 255.255.255.255)
  63. * @param string $ip
  64. * @return boolean
  65. */
  66. static function ip($ip) {
  67. return (boolean) filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4);
  68. }
  69. /**
  70. * 验证 $ip 是否有效的 公网 ipv4地址
  71. * FILTER_FLAG_IPV4 - 要求值是合法的 IPv4 IP(比如 255.255.255.255)
  72. * FILTER_FLAG_NO_PRIV_RANGE - 要求值不是 RFC 指定的私域 IP (比如 192.168.0.90、10.0.0.90)
  73. * @param string $ip
  74. * @return boolean
  75. */
  76. static function publicIp($ip) {
  77. return (boolean) filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE);
  78. }
  79. /**
  80. * 验证手机号是否合法
  81. * @param string $mobile
  82. * @return boolean
  83. */
  84. static function mobile($mobile){
  85. if(!preg_match('/^[1]{1}[3|5|8]{1}[0-9]{9}$/', $mobile)) {
  86. return false;
  87. }
  88. return $mobile;
  89. }
  90. }