123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500 |
- <?php
- namespace huolib\tool;
- use huolib\constant\WalletConst;
- class StrUtils {
-
- public static function trimAll($str) {
- $_rule = array(" ", " ", "\t", "\n", "\r");
- $_replace = array("", "", "", "", "");
- return str_replace($_rule, $_replace, $str);
- }
-
- public static function checkPhone($phone) {
- $_pattern = "/^1[23456789]\d{9}$/";
- return preg_match($_pattern, $phone);
- }
-
- public static function checkEmail($email) {
- $_pattern = "/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i";
- return preg_match($_pattern, $email);
- }
-
- public static function checkEnStrAndNum($str) {
- $_pattern = "/^[a-zA-Z0-9]+$/i";
- return preg_match($_pattern, $str);
- }
-
- public static function checkPrintStr($str) {
- $_pattern = "/^[A-Za-z0-9`~!@#$%^&*()_\-+=<>?:\"{}|,.\/;'\\[\]]+$/i";
- return preg_match($_pattern, $str);
- }
-
- public static function encryptPhone($phone = '', $start = 3, $length = 4) {
- if (empty($phone)) {
- return '';
- }
- if (false == self::checkPhone($phone)) {
- return false;
- }
- $replacement = str_pad('', $length, '*');
- return substr_replace($phone, $replacement, $start, $length);
-
- }
-
- public static function encryptIdCard($id_card = '', $start = 3, $end = 2) {
- if (empty($id_card)) {
- return '';
- }
- $_length = strlen($id_card);
- $length = $_length - $end - $start;
- $replacement = str_pad('', $length, '*');
- return substr_replace($id_card, $replacement, $start, $length);
- }
-
- public static function encryptName($name) {
- if (empty($name)) {
- return '';
- }
- $encrypt_name = '';
-
- if (preg_match("/[\x{4e00}-\x{9fa5}]+/u", $name)) {
-
- $len = mb_strlen($name, 'UTF-8');
-
- if ($len >= 3) {
-
- $encrypt_name = mb_substr($name, 0, 1, 'UTF-8').str_repeat('*', $len - 2).mb_substr(
- $name, -1, 1, 'UTF-8'
- );
- } elseif ($len === 2) {
-
- $encrypt_name = mb_substr($name, 0, 1, 'UTF-8').'*';
- }
- } else {
-
- $len = strlen($name);
-
- if ($len >= 3) {
-
- $encrypt_name = substr($name, 0, 1).str_repeat('*', $len - 2).substr($name, -1);
- } elseif ($len === 2) {
-
- $encrypt_name = substr($name, 0, 1).'*';
- }
- }
- return $encrypt_name;
- }
-
- public static function encryptEmail($email = '') {
- if (false == self::checkEmail($email)) {
- return false;
- }
- $_str = $email;
- $_email_array = explode("@", $_str);
- $_prev_fix = (strlen($_email_array[0]) < 4) ? "" : substr($_str, 0, 3);
- $_count = 0;
- $_str = preg_replace('/([\d\w+_-]{0,100})@/', '***@', $_str, -1, $_count);
- return $_prev_fix.$_str;
- }
-
- public static function parseStr($str = '') {
- $_str_arr = explode('&', $str);
- $_data_arr = array();
- foreach ($_str_arr as $_key => $_val) {
- $_pair = explode('=', $_val, 2);
- $_data_arr[$_pair[0]] = $_pair[1];
- }
- return $_data_arr;
- }
-
- public static function getRandChars($length) {
- $str = null;
- $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
- $max = strlen($strPol) - 1;
- for ($i = 0; $i < $length; $i++) {
- $str .= $strPol[rand(0, $max)];
- }
- return $str;
- }
-
- public static function createLinkString(array $para) {
- $_arg = "";
- while (list($_key, $_val) = self::funcNewEach($para)) {
- $_arg .= $_key."=".urlencode($_val)."&";
- }
-
- $_arg = substr($_arg, 0, strlen($_arg) - 1);
-
- if (get_magic_quotes_gpc()) {
- $_arg = stripslashes($_arg);
- }
- return $_arg;
- }
- public static function funcNewEach(&$array) {
- $_res = array();
- $_key = key($array);
- if ($_key !== null) {
- next($array);
- $res[1] = $_res['value'] = $array[$_key];
- $res[0] = $_res['key'] = $_key;
- } else {
- $res = false;
- }
- return $res;
- }
-
-
- public static function genOrderId(
- $login_ch = 0, $pay_ch = 0, $mem_id = 0, $ext = WalletConst::WALLET_ORDER_PREFIX_SDK
- ) {
- list($_u_sec, $_sec) = explode(" ", microtime());
-
- $_order_id = $ext.$_sec.
- substr($_u_sec, 2, 3).
- sprintf("%02d", $login_ch % 100).
- sprintf("%02d", $pay_ch % 100).
- sprintf("%02d", $mem_id % 100);
- return $_order_id;
- }
-
- public static function genToken($str = '') {
- $time = time();
- $pay_token = md5(md5(uniqid($str)).$time);
- return $pay_token;
- }
-
- public static function argSort(array $para) {
- ksort($para);
- reset($para);
- return $para;
- }
- public static function sAddAlashes($string) {
- if (is_array($string)) {
- foreach ($string as $_key => $_val) {
- $string[$_key] = self::sAddAlashes($_val);
- }
- } else {
- $string = addslashes(trim($string));
- }
- return $string;
- }
-
- public static function safeFilter($string) {
- $_magic_quote = get_magic_quotes_gpc();
- if (empty($_magic_quote)) {
- $string = self::sAddAlashes($string);
- }
- if (is_array($string)) {
- foreach ($string as $key => $val) {
- $string[$key] = self::sAddAlashes($val);
- }
- } else {
- $string = htmlspecialchars(trim($string));
- }
- return $string;
- }
-
- public static function strToArr($string) {
- return is_string($string) ? explode(',', $string) : $string;
- }
-
- public static function arrToStr($arr) {
- return is_array($arr) ? implode(',', $arr) : '';
- }
-
- public static function getUrl($url) {
-
- $_check = strpos($url, '?');
-
- if (false !== $_check) {
- if (substr($url, $_check + 1) == '') {
-
- $_new_url = $url;
- } else {
-
- $_new_url = $url.'&';
- }
- } else {
- $_new_url = $url.'?';
- }
- return $_new_url;
- }
-
- public static function formatNumber($num = 0.00, $decimals = 2) {
- return floatval(number_format($num, $decimals, '.', ''));
- }
-
- public static function compareNumber($num1, $num2) {
- $_num1 = self::formatNumber($num1, 4);
- $_num2 = self::formatNumber($num2, 4);
- if ($_num1 == $_num2) {
- return 0;
- } elseif ($_num1 < $_num2) {
- return -1;
- } else {
- return 1;
- }
- }
-
- public static function getArpu($sum_money, $user_cnt) {
- $sum_money = (float)$sum_money;
- $user_cnt = (float)$user_cnt;
- if (!is_numeric($sum_money) || !is_numeric($user_cnt)) {
- return '0';
- }
- if (empty($user_cnt)) {
- return '0';
- }
- $_arppu = $sum_money / $user_cnt;
- return StrUtils::formatNumber($_arppu);
- }
-
- public static function getRate($cnt1, $cnt2) {
- if (!is_numeric($cnt1)) {
- return '0%';
- }
- if (empty($cnt2) || $cnt2 == '0.00') {
- return '0%';
- }
- $_rate = 100 * $cnt1 / $cnt2;
- return StrUtils::formatNumber($_rate).'%';
- }
- public static function isJson($str) {
- json_decode($str);
- return (json_last_error() == JSON_ERROR_NONE);
- }
-
- public static function getRoute($url) {
- $_url_info = parse_url($url);
-
- if (isset($_url_info['scheme']) && isset($_url_info['path'])) {
- $_url = $_url_info['path'];
- } else {
- $_url = $url;
- }
-
- $_route_arr = array_slice(explode('/', $_url), 0, 4);
- $_route = implode('/', $_route_arr);
- return $_route;
- }
- }
|