common.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <?php
  2. // 应用公共文件
  3. if (!function_exists('returnFormat')) {
  4. /**
  5. * 格式化输出返回值
  6. * @param int $code
  7. * @param string $msg
  8. * @param mixed $data
  9. * @return mixed
  10. */
  11. function returnFormat($code = 0, $msg = "", $data = [])
  12. {
  13. $res['code'] = $code;
  14. $res['data'] = $data;
  15. $res['msg'] = $msg;
  16. return $res;
  17. }
  18. }
  19. if (!function_exists('each_item')) {
  20. function each_item(&$array)
  21. {
  22. $res = array();
  23. $key = key($array);
  24. if ($key !== null) {
  25. next($array);
  26. $res[1] = $res['value'] = $array[$key];
  27. $res[0] = $res['key'] = $key;
  28. } else {
  29. $res = false;
  30. }
  31. return $res;
  32. }
  33. }
  34. if (!function_exists('getVirRootDir')) {
  35. /**
  36. * 获取虚拟目录路径
  37. * @return bool|string
  38. */
  39. function getVirRootDir()
  40. {
  41. if (isset($_SERVER['HTTP_X_ORIGINAL_URI'])) {
  42. $url = $_SERVER['HTTP_X_ORIGINAL_URI'];
  43. return preg_replace('/\/index\.php.*/m', '', $url);
  44. } elseif (isset($_SERVER['SCRIPT_NAME'])) {
  45. $url = $_SERVER['SCRIPT_NAME'];
  46. $url = substr($url, 0, strripos($url, "/"));
  47. return $url;
  48. }
  49. return '';
  50. }
  51. }
  52. if (!function_exists('getNow')) {
  53. /**
  54. * 获取当时时间
  55. * @param string $fmt 格式化
  56. * @return false|string
  57. */
  58. function getNow($fmt = "Y-m-d H:i:s")
  59. {
  60. return date($fmt);
  61. }
  62. }
  63. if (!function_exists('getUrl')) {
  64. /**
  65. * 获取当前的访问路径
  66. * @return [type] [description]
  67. */
  68. function getUrl()
  69. {
  70. $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';
  71. $php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
  72. $path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
  73. $relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self . (isset($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : $path_info);
  74. return $sys_protocal . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '') . $relate_url;
  75. }
  76. }
  77. if (!function_exists('number2chinese')) {
  78. function number2chinese($num)
  79. {
  80. $arr = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
  81. $cny = array('', '拾', '佰', '仟', '', '萬', '亿', '兆');
  82. //小数部分
  83. $retval = '';
  84. if (strpos($num, '.') !== false) {
  85. list($num, $dec) = explode('.', $num);
  86. $retval .= $arr[$dec[0]] . '角' . $arr[$dec[1]] . '分';
  87. }
  88. //整数部分
  89. $str = $num != '0' ? strrev($num) : '';
  90. $out = array();
  91. for ($i = 0; $i < strlen($str); $i++) {
  92. $out[$i] = $arr[$str[$i]];
  93. $out[$i] .= $str[$i] != '0' ? $cny[$i % 4] : '';
  94. if ($i > 1 && $str[$i] + $str[$i - 1] == 0) {
  95. $out[$i] = '';
  96. }
  97. if ($i % 4 == 0) {
  98. $out[$i] .= $cny[4 + floor($i / 4)];
  99. }
  100. //echo $out[$i].'<br>';
  101. }
  102. $retval = implode('', array_reverse($out)) . '元' . $retval;
  103. return $retval;
  104. }
  105. }
  106. if (!function_exists('toUnderScore')) {
  107. /**
  108. * 驼峰命名转下划线命名
  109. * 思路:
  110. * 小写和大写紧挨一起的地方,加上分隔符,然后全部转小写
  111. * @param $camelCaps
  112. * @param string $separator
  113. * @return string
  114. * @author web
  115. */
  116. function toUnderScore($camelCaps, $separator = '_')
  117. {
  118. return strtolower(preg_replace('/([a-z])([A-Z])/', "$1" . $separator . "$2", $camelCaps));
  119. }
  120. }
  121. if (!function_exists('convertUTF8')) {
  122. /**
  123. * 解决中文乱码的问题
  124. * @param $str
  125. * @return string
  126. */
  127. function convertUTF8($str)
  128. {
  129. if (empty($str)) return '';
  130. return iconv('utf-8', 'gb2312', $str);
  131. }
  132. }
  133. if (!function_exists('isIdCardNo')) {
  134. /**
  135. * 判断是否为合法的身份证号码
  136. * @param $mobile
  137. * @return int
  138. */
  139. function isIdCardNo($vStr)
  140. {
  141. $vCity = array(
  142. '11', '12', '13', '14', '15', '21', '22',
  143. '23', '31', '32', '33', '34', '35', '36',
  144. '37', '41', '42', '43', '44', '45', '46',
  145. '50', '51', '52', '53', '54', '61', '62',
  146. '63', '64', '65', '71', '81', '82', '91'
  147. );
  148. if (!preg_match('/^([\d]{17}[xX\d]|[\d]{15})$/', $vStr)) return false;
  149. if (!in_array(substr($vStr, 0, 2), $vCity)) return false;
  150. $vStr = preg_replace('/[xX]$/i', 'a', $vStr);
  151. $vLength = strlen($vStr);
  152. if ($vLength == 18) {
  153. $vBirthday = substr($vStr, 6, 4) . '-' . substr($vStr, 10, 2) . '-' . substr($vStr, 12, 2);
  154. } else {
  155. $vBirthday = '19' . substr($vStr, 6, 2) . '-' . substr($vStr, 8, 2) . '-' . substr($vStr, 10, 2);
  156. return false;//不考虑一代身份证了
  157. }
  158. if (date('Y-m-d', strtotime($vBirthday)) != $vBirthday) return false;
  159. if ($vLength == 18) {
  160. $vSum = 0;
  161. for ($i = 17; $i >= 0; $i--) {
  162. $vSubStr = substr($vStr, 17 - $i, 1);
  163. $vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr, 11));
  164. }
  165. if ($vSum % 11 != 1) return false;
  166. }
  167. return true;
  168. }
  169. }
  170. if (!function_exists('cleanEnter')) {
  171. /**
  172. * 清除回车换行和前后空格
  173. * @param $str
  174. * @return array|string|string[]
  175. */
  176. function cleanEnter($str)
  177. {
  178. $str = trim($str);
  179. $str = str_replace("\n", "", $str);
  180. $str = str_replace("\r", "", $str);
  181. return $str;
  182. }
  183. }
  184. if (!function_exists('randNum')) {
  185. /**
  186. * 获取数字随机数
  187. * @param $length 数字长度
  188. * @return int
  189. */
  190. function randNum($length = 8)
  191. {
  192. $min = pow(10, $length - 1) + 1;
  193. $max = pow(10, $length) - 1;
  194. $rand = rand($min, $max);
  195. // echo "length: $length, min: $min ,max: $max ,rand: $rand \r\n <br/>";
  196. return $rand;
  197. }
  198. }
  199. if (!function_exists('getParamValue')) {
  200. /**
  201. * 获取数组结构的参数值
  202. * @param $key 键名
  203. * @param $array 参数数组
  204. * @param $default 默认值,如果键不存在就返回此值,默认为NULL
  205. * @return mixed|null 返回值
  206. */
  207. function getParamValue($key, $array, $default = null)
  208. {
  209. if (array_key_exists($key, $array)) {
  210. return $array[$key];
  211. }
  212. return $default;
  213. }
  214. }