zoukankan      html  css  js  c++  java
  • PHP 将一个字符串部分字符用$re替代隐藏

    <?php
    /**
    * 将一个字符串部分字符用$re替代隐藏
    * @param string $string 待处理的字符串
    * @param int $start 规定在字符串的何处开始,
    * 正数 - 在字符串的指定位置开始
    * 负数 - 在从字符串结尾的指定位置开始
    * 0 - 在字符串中的第一个字符处开始
    * @param int $length 可选。规定要隐藏的字符串长度。默认是直到字符串的结尾。
    * 正数 - 从 start 参数所在的位置隐藏
    * 负数 - 从字符串末端隐藏
    * @param string $re 替代符
    * @return string 处理后的字符串
    */
    function hidestr($string, $start = 0, $length = 0, $re = '*') {
    if (empty($string)) return false;
    $strarr = array();
    $mb_strlen = mb_strlen($string);
    while ($mb_strlen) {
    $strarr[] = mb_substr($string, 0, 1, 'utf8');
    $string = mb_substr($string, 1, $mb_strlen, 'utf8');
    $mb_strlen = mb_strlen($string);
    }
    $strlen = count($strarr);
    $begin = $start >= 0 ? $start : ($strlen - abs($start));
    $end = $last = $strlen - 1;
    if ($length > 0) {
    $end = $begin + $length - 1;
    } elseif ($length < 0) {
    $end -= abs($length);
    }
    for ($i=$begin; $i<=$end; $i++) {
    $strarr[$i] = $re;
    }
    if ($begin >= $end || $begin >= $last || $end > $last) return false;
    return implode('', $strarr);
    }
    //隐藏手机号中间4位
    hidestr('18600005940', 3, 4); //186****5940

    //只保留姓名里的最后一个字,常见与ATM,网银等
    hidestr('谢世亮', 0, -1); //**亮

    //隐藏邮箱部分内容,常见网站帐号,如支付宝等
    list($name, $domain) = explode('@', '979137@qq.com');
    hidestr($name, 1, -1) . '@' . hidestr($domain, 0, 2); // 9****7@**.com

  • 相关阅读:
    linux固定ip设置
    经典shell面试题
    shell学习笔记
    从tcp到netty(二)
    Mysql复习
    从tcp到netty(一)
    浏览器展示图片(非下载)- java
    异常总结
    反射获取属性值并设置属性值
    TreeMap解析
  • 原文地址:https://www.cnblogs.com/zwt0626/p/8251825.html
Copyright © 2011-2022 走看看