如何将手机号码中间做掩码,四个常用文本操作技巧
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将手机号码中间做掩码,四个常用文本操作技巧相关的知识,希望对你有一定的参考价值。
参考技术A Excel中登记的手机号码,如果我们不想外传又不能把那个字段删掉,掩码就是最好的选择,最先开始看到有人用分裂的方法把中间四位分裂出来再做替换,其实有一个固定的函数replace。第一行是文本形式的号码,第二行是普通格式的号码,公式=repalce(A1,4,4,"****")
例如我们想在A列输入11位数的手机号码,输入超出11位或不足11位就会报错,这样就不会因少输一位而登记错了
点击上方数据选项卡,选择数据验证(早期版本是数据有效性),在允许下拉框中选择文本长度,然后下方数据选择长度等于11
测试一下刚刚的设置有没有效果
有人会想到用len函数,没错就是这个,但是看看下面的列子
“今天星期 一”明明就是5个字 为什么回出来6呢,仔细一看“一”前面有个空格,用trim去空格??NO,上面这个例子用trim肯定是失败的 不信自己试试,这里用一个查找替换的方法,最简单的操作。
有时候会需要将文字顺序反着来,先复制一下(不复制在原文字上改也可以),在上面字体那里前面加个@符号 (如果是宋体就是@宋体),再把文字方向调成向下旋转
最后调成自动换行,如果是竖着显示的 把行高拉正常就行了(两行结果可以对比下,少了个@字体)
PHP常用的方法
PHP对银行卡做掩码处理
<?php /*------------------------------------------------------ */ // * 对银行卡号进行掩码处理 // * @param string $bankCardNo 银行卡号 //* @return string 掩码后的银行卡号 /*------------------------------------------------------ */ function formatBankCardNo($bankCardNo){ //截取银行卡号前4位 $prefix = substr($bankCardNo,0,4); //截取银行卡号后4位 $suffix = substr($bankCardNo,-4,4); $maskBankCardNo = $prefix." **** **** **** ".$suffix; return $maskBankCardNo; } /*------------------------------------------------------ */ // * 时间转换计算 // * @param$show_time 需要转换的时间戳 // * @return string 转换后的时间 /*------------------------------------------------------ */ function timeTran($show_time) { $dur = time() - $show_time; if ($dur < 0) { return ‘刚刚‘; } if ($dur < 60) { return $dur . ‘秒前‘; } if ($dur < 3600) { return floor($dur / 60) . ‘分钟前‘; } if ($dur < 86400) { return floor($dur / 3600) . ‘小时前‘; } if ($dur < 259200) {//3天内 return floor($dur / 86400) . ‘天前‘; } return date("Y-m-d", $show_time); } /*------------------------------------------------------ */ // * 生成指定长度的随机字符串(包含大写英文字母, 小写英文字母, 数字) // * @param int $length 需要生成的字符串的长度 // * @return string 包含 大小写英文字母 和 数字 的随机字符串 /*------------------------------------------------------ */ function random_str($length,$isupper = false){ //生成一个包含 大写英文字母, 小写英文字母, 数字 的数组 $arr = $isupper ? array_merge(range(‘A‘,‘H‘),range(‘J‘,‘M‘),range(‘P‘,‘Z‘),range(0,9)) : array_merge(range(‘A‘, ‘Z‘),range(0, 9), range(‘a‘, ‘z‘)); $str = ‘‘; $arr_len = count($arr); for ($i = 0; $i < $length; $i++){ $rand = mt_rand(0, $arr_len-1); $str.=$arr[$rand]; } return $str; } /*------------------------------------------------------ */ // * 实现中文字串截取无乱码的方法 // * @param $string 待截取的字符串 // * @param $start 开始截取位置 // * @param $length 截取长度 // * @return $string 截取后的字符串 /*------------------------------------------------------ */ function getSubstr($string, $start, $length) { if(mb_strlen($string,‘utf-8‘)>$length){ $str = mb_substr($string, $start, $length,‘utf-8‘); return $str.‘...‘; }else{ return $string; } } /*------------------------------------------------------ */ // * 验证手机号码 // * @param $phone 手机号码 // * @return bool /*------------------------------------------------------ */ function checkMobile($phone = ‘‘){ $preg_phone=‘/^1d{10}$/ims‘; if(preg_match($preg_phone,$phone)){ return true; } return false; } /*------------------------------------------------------ */ //-- 过滤掉emoji表情 /*------------------------------------------------------ */ function repEmoji($str){ $str = preg_replace_callback( ‘/./u‘,function (array $match) { return strlen($match[0]) >= 4 ? ‘‘ : $match[0]; },$str); return $str; } /*------------------------------------------------------ */ //-- 格式化价格 //-- @access public //-- @param float $price 价格 //-- @return string /*------------------------------------------------------ */ function priceFormat($price,$show_yuan = false,$type=0){ switch ($type){ case 0: $price = number_format($price, 2, ‘.‘, ‘‘); break; case 1: // 保留不为 0 的尾数 $price = preg_replace(‘/(.*)(\.)([0-9]*?)0+$/‘, ‘123‘, number_format($price, 2, ‘.‘, ‘‘)); if (substr($price, -1) == ‘.‘) $price = substr($price, 0, -1); break; case 2: // 不四舍五入,保留1位 $price = substr(number_format($price, 2, ‘.‘, ‘‘), 0, -1); break; case 3: // 直接取整 $price = intval($price); break; case 4: // 四舍五入,保留 1 位 $price = number_format($price, 1, ‘.‘, ‘‘); break; case 5: // 先四舍五入,不保留小数 $price = round($price); break; } if($show_yuan == false) return sprintf("%s", $price); else return sprintf("¥%s元", $price); }
/*------------------------------------------------------ */
//-- * 格式化字节大小
//-- * @param number $size 字节数
//-- * @param string $delimiter 数字和单位分隔符
//-- * @return string
/*------------------------------------------------------ */
function formatBytes($size, $delimiter = ‘‘) {
$units = array(‘B‘, ‘KB‘, ‘MB‘, ‘GB‘, ‘TB‘, ‘PB‘);
for ($i = 0; $size >= 1024 && $i < 5; $i++) $size /= 1024;
return round($size, 2) . $delimiter . $units[$i];
}
/*------------------------------------------------------ */ //-- 将数组转换组下拉选项 //-- @param array $arr 所有的数组 //-- @param int $selected 选中项 //-- @param boolean $islimit 是否判断限制不可选 //-- @param int $level 返回等级 //-- @param int $kd_type 快递类型:0 快递100; 1 快递鸟 //-- @return string /*------------------------------------------------------ */ function arrToSel(&$rows = array(), $selected = 0, $islimit = false, $level = 0 ){ $select = ‘‘; $selected = explode(‘,‘,$selected); foreach ($rows AS $key=>$val){ if (is_array($val) == false){ $selected = (in_array($key,$selected)) ? "selected=‘selected‘" : ‘‘; $select .= ‘<option value="‘.$key.‘" ‘.$selected.‘>‘.$val.‘</option>‘; continue; } if ($level > 0 && $val[‘level‘] > $level) continue; $select .= ‘<option ‘; if ($islimit === true && $val[‘children‘] != $val[‘id‘] ){ $val[‘id‘] = ‘‘; $select .= ‘ style="background:#999;" ‘; } if (isset($val[‘status‘]) && $val[‘status‘] == 0){ $select .= ‘ style="color:#CCC;" ‘; }elseif (isset($val[‘is_sys‘]) && $val[‘is_sys‘] == 1){ $select .= ‘ style="color:#ff0000;" ‘; } $text = htmlspecialchars(strip_tags($val[‘name‘])); if (empty($val[‘dict_val‘]) == false){ $select .= ‘ value="‘.$val[‘ext_val‘].‘" ‘; $selval = $val[‘ext_val‘]; }else{ $select .= ‘ value="‘.$val[‘id‘].‘" ‘; $selval = $val[‘id‘]; } $select .= (in_array($selval,$selected)) ? "selected=‘selected‘" : ‘‘; $select .= ‘ data-text="‘.$text.‘" label="‘.$text.‘" >‘; if (isset($val[‘icon‘])) $select .= $val[‘icon‘]; $select .= $text; $select .= ‘</option>‘; } return $select; } /*------------------------------------------------------ */ //-- 返回一个带有缩进级别的数组 /*------------------------------------------------------ */ function returnRecArr(&$rows){ $newrows = array(); foreach ($rows as $key=>$row){ $newrows[$row[‘pid‘]][$row[‘id‘]] = $row; } return $newrows; } /*------------------------------------------------------ */ //-- 创建目录 /*------------------------------------------------------ */ function makeDir($folder){ $reval = false; if (!file_exists($folder)){ /* 如果目录不存在则尝试创建该目录 */ @umask(0); /* 将目录路径拆分成数组 */ preg_match_all(‘/([^/]*)/?/i‘, $folder, $atmp); /* 如果第一个字符为/则当作物理路径处理 */ $base = ($atmp[0][0] == ‘/‘) ? ‘/‘ : ‘‘; /* 遍历包含路径信息的数组 */ foreach ($atmp[1] as $val){ if (‘‘ != $val){ $base .= $val; if (‘..‘ == $val || ‘.‘ == $val){ /* 如果目录为.或者..则直接补/继续下一个循环 */ $base .= ‘/‘; continue; } }else{continue;} $base .= ‘/‘; if (!file_exists($base)){ /* 尝试创建目录,如果创建失败则继续循环 */ if (@mkdir(rtrim($base, ‘/‘), 0777)){ @chmod($base, 0777); $reval = true; } } } }else{ /* 路径已经存在。返回该路径是不是一个目录 */ $reval = is_dir($folder); } clearstatcache(); return $reval; } /** * 写入日志 * @param string|array $values * @param string $dir * @return bool|int */ function _log($values, $dir) { if (is_array($values)) $values = print_r($values, true); // 日志内容 $content = ‘[‘ . date(‘Y-m-d H:i:s‘) . ‘]‘ . PHP_EOL . $values . PHP_EOL . PHP_EOL; try { // 文件路径 $filePath = $dir . ‘/logs/‘; // 路径不存在则创建 !is_dir($filePath) && mkdir($filePath, 0755, true); // 写入文件 return file_put_contents($filePath . date(‘Ymd‘) . ‘.log‘, $content, FILE_APPEND); } catch (Exception $e) { return false; } } /*------------------------------------------------------ * 校验日期格式是否正确 * @param string $date 日期 * @param string $formats 需要检验的格式数组 * @return boolean ------------------------------------------------------ */ function checkDateIsValid($date, $formats = array("Y-m-d H:i:s","Y-m-d H:i")){ $unixTime = strtotime($date); if (!$unixTime) return false; //strtotime转换不对,日期格式显然不对 //校验日期的有效性,只要满足其中一个格式就OK if (!is_array($formats)) $formats = explode(‘,‘,$formats); foreach ($formats as $format) { if (date($format, $unixTime) == $date) return true; } return false; } /** * 获取当前页面完整URL地址 */ function getUrl($val=‘‘,$valb=‘‘,$var=array()){ $sys_protocal = isset($_SERVER[‘SERVER_PORT‘]) && $_SERVER[‘SERVER_PORT‘] == ‘443‘ ? ‘https://‘ : ‘http://‘; if($valb == ‘img‘){ if (strstr($val,‘http:‘)) return $val; return $sys_protocal.(isset($_SERVER[‘HTTP_HOST‘]) ? $_SERVER[‘HTTP_HOST‘] : ‘‘).$val; }elseif($valb == ‘url‘){ $var[‘token‘] = $GLOBALS[‘userinfo‘][‘token‘]; if (strstr($val,‘http:‘)) return $val; return $sys_protocal.(isset($_SERVER[‘HTTP_HOST‘]) ? $_SERVER[‘HTTP_HOST‘] : ‘‘).url($val,$var); }elseif($valb == ‘_url‘){ $var[‘token‘] = $GLOBALS[‘userinfo‘][‘token‘]; if (strstr($val,‘http:‘)) return $val; return $sys_protocal.(isset($_SERVER[‘HTTP_HOST‘]) ? $_SERVER[‘HTTP_HOST‘] : ‘‘).url($val,$var); } $php_self = $_SERVER[‘PHP_SELF‘] ? $_SERVER[‘PHP_SELF‘] : $_SERVER[‘SCRIPT_NAME‘]; $path_info = isset($_SERVER[‘PATH_INFO‘]) ? $_SERVER[‘PATH_INFO‘] : ‘‘; $relate_url = isset($_SERVER[‘REQUEST_URI‘]) ? $_SERVER[‘REQUEST_URI‘] : $php_self.(isset($_SERVER[‘QUERY_STRING‘]) ? ‘?‘.$_SERVER[‘QUERY_STRING‘] : $path_info); return $sys_protocal.(isset($_SERVER[‘HTTP_HOST‘]) ? $_SERVER[‘HTTP_HOST‘] : ‘‘).$relate_url; } /** * 获取url 中的各个参数 类似于 pay_code=alipay&bank_code=ICBC-DEBIT * @param type $str * @return type */ function parseUrlParam($str){ $data = array(); $str = explode(‘?‘,$str); $str = end($str); $parameter = explode(‘&‘,$str); foreach($parameter as $val){ $tmp = explode(‘=‘,$val); $data[$tmp[0]] = $tmp[1]; } return $data; }
以上是关于如何将手机号码中间做掩码,四个常用文本操作技巧的主要内容,如果未能解决你的问题,请参考以下文章