common.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. <?php
  2. /**
  3. * 字符串转数组
  4. *
  5. * @param string $string 字符串
  6. *
  7. * @return array
  8. *
  9. */
  10. function str_to_array($string) {
  11. return is_string($string) ? explode(',', $string) : $string;
  12. }
  13. /**
  14. * 数组转字符串
  15. *
  16. * @param array $array 字符串
  17. *
  18. * @return string
  19. *
  20. */
  21. function array_to_str($array) {
  22. return is_array($array) ? implode(',', $array) : $array;
  23. }
  24. /**
  25. * 转化数据库保存图片的文件路径,为可以访问的url
  26. *
  27. * @param string $url 文件路径,数据存储的文件相对路径
  28. *
  29. * @return string 图片链接
  30. */
  31. function huo_get_down_url($url) {
  32. if (0 === strpos($url, "http") || 0 === strpos($url, "https") || 0 === strpos($url, "itms-services")) {
  33. return $url;
  34. }
  35. return DOWNSITE.$url;
  36. }
  37. /**
  38. * 获取首字符缩写
  39. *
  40. * @param string $str
  41. *
  42. * @return string
  43. */
  44. function huo_initials($str) {
  45. if (empty($str)) {
  46. return '';
  47. }
  48. $_string = '';
  49. $_name_arr = explode(' ', $str);
  50. foreach ($_name_arr as $_letter) {
  51. if (empty($_letter)) {
  52. continue;
  53. }
  54. $_string .= $_letter{0};
  55. }
  56. return strtolower($_string);
  57. }
  58. /**
  59. * 格式化文件大小
  60. *
  61. * @param int $byte
  62. *
  63. * @return string
  64. */
  65. function huo_format_file_size($byte) {
  66. // If the file size is zero return a blank result
  67. $_size = $byte;
  68. if (!$_size || $_size < 0) {
  69. return '0 B';
  70. }
  71. // If the file size is smaller than 1KB
  72. if ($_size <= 1024) {
  73. return '1 KB';
  74. }
  75. // Set an array of all file size units
  76. $_size_units = Array(
  77. 'B',
  78. 'KB',
  79. 'MB',
  80. 'GB',
  81. 'TB',
  82. 'PB',
  83. 'EB'
  84. );
  85. // Set the initial unit to Bytes
  86. $_unit = $_size_units[0];
  87. // Loop through all file size units
  88. for ($_i = 1; ($_i < count($_size_units) && $_size >= 1024); $_i++) {
  89. $_size = $_size / 1024;
  90. $_unit = $_size_units[$_i];
  91. }
  92. // Set the number of digits after the decimal place in the resulted file size
  93. $_round = 2;
  94. // If the file size is in KiloByte we do not need any decimal numbers
  95. if ($_unit == 'KB') {
  96. $_round = 0;
  97. }
  98. // Round the file size
  99. $_formatted = round((float)$_size, $_round);
  100. // Return the file size data
  101. return $_formatted." ".$_unit;
  102. }
  103. function get_select($data = [], $field = ['id' => 'name']) {
  104. $_result = [];
  105. if (!empty($data)) {
  106. foreach ($data as $val) {
  107. foreach ($field as $item => $vale) {
  108. $_result[$val[$item]] = $val[$vale];
  109. }
  110. }
  111. }
  112. return $_result;
  113. }
  114. /**
  115. * 获取子类
  116. *
  117. * @param array $cate
  118. * @param int $id
  119. * @param string $name
  120. *
  121. * @return array
  122. */
  123. function get_child($cate = [], $id = 0, $name = 'parent_id') {
  124. $_arr = array();
  125. foreach ($cate as $val) {
  126. if ($val[$name] == $id) {
  127. $val['child'] = get_child($cate, $val['id'], $name);
  128. array_push($_arr, $val);
  129. }
  130. }
  131. return $_arr;
  132. }
  133. /**
  134. * 层级转一维数组
  135. *
  136. * @param array $cate
  137. * @param string $name
  138. *
  139. * @return array
  140. */
  141. function get_single($cate = [], $name = 'child') {
  142. static $_arr = array();
  143. foreach ($cate as $val) {
  144. if (!empty($val[$name])) {
  145. $temp = $val[$name];
  146. get_single($temp, $name);
  147. }
  148. unset($val[$name]);
  149. array_push($_arr, $val);
  150. }
  151. return $_arr;
  152. }
  153. /**
  154. * 发送邮件
  155. *
  156. * @param string $address
  157. * @param string $subject
  158. * @param string $message
  159. *
  160. * @return array<br>
  161. * 返回格式:<br>
  162. * array(<br>
  163. * "error"=>0|1,//0代表出错<br>
  164. * "message"=> "出错信息"<br>
  165. * );
  166. */
  167. function sp_send_email($address, $subject, $message) {
  168. $email_arr = sp_get_emailinfo();
  169. $mail = new \email\phpmailer\Phpmailer();
  170. // 设置PHPMailer使用SMTP服务器发送Email
  171. $mail->IsSMTP();
  172. $mail->IsHTML(true);
  173. // 设置邮件的字符编码,若不指定,则为'UTF-8'
  174. $mail->CharSet = 'UTF-8';
  175. // 添加收件人地址,可以多次使用来添加多个收件人
  176. $mail->AddAddress($address);
  177. // 设置邮件正文
  178. $mail->Body = $message;
  179. // 设置邮件头的From字段。
  180. $mail->From = $email_arr['address'];
  181. // 设置发件人名字
  182. $mail->FromName = $email_arr['sender'];;
  183. // 设置邮件标题
  184. $mail->Subject = $subject;
  185. // 设置SMTP服务器。
  186. $mail->Host = $email_arr['smtp'];
  187. // 设置SMTP服务器端口。
  188. $port = $email_arr['smtp_port'];
  189. $mail->Port = empty($port) ? "25" : $port;
  190. // 设置为"需要验证"
  191. $mail->SMTPAuth = true;
  192. // 设置用户名和密码。
  193. $mail->Username = $email_arr['username'];
  194. $mail->Password = $email_arr['password'];
  195. // 发送邮件。
  196. if (!$mail->Send()) {
  197. $mailerror = $mail->ErrorInfo;
  198. return array("error" => 1, "message" => $mailerror);
  199. } else {
  200. return array("error" => 0, "message" => "success");
  201. }
  202. }
  203. /**
  204. * 获取当前邮箱信息
  205. *
  206. * @return array
  207. */
  208. function sp_get_emailinfo() {
  209. $emailarr = \think\Db::name('email')->order('id desc')->limit(1)->find();
  210. return $emailarr;
  211. }
  212. /**
  213. * 获取数组的内的值
  214. *
  215. * @param array $data
  216. * @param $key
  217. * @param string $default
  218. *
  219. * @return mixed|string
  220. */
  221. function get_val($data = array(), $key, $default = '') {
  222. if (empty($key) || empty($data) || !isset($data[$key])) {
  223. return $default;
  224. }
  225. return $data[$key];
  226. }
  227. /**
  228. * 万格式化
  229. *
  230. * @param $number
  231. *
  232. * @return float|int|string
  233. */
  234. function format_ten_thousand($number) {
  235. return \huolib\tool\StrUtils::formatNumber($number);
  236. //return $number < 10000 ? \huolib\tool\StrUtils::formatNumber($number) : (round($number / 10000, 2) . 'W');
  237. }