<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >[info] 數據脫敏 參考 `rrzuji` 代碼: ### 目的: 為了統一平臺的脫敏規則,避免對同一類型數據采用不同的脫敏規則,也為了能夠靈活調整脫敏規則,因此在Yii框架中提供了統一的脫敏方法 ### 代碼路徑: \\common\\Tool\\DataMasking\\DataMaskingTools \\common\\Service\\Security\\DataMasking\\DataMaskingService ### 調用方法示例: ![](https://img.kancloud.cn/87/37/873790c1309283e42d9cb4c5acad890a_592x516.png) 目前提供了姓名,手機號,地址,郵箱,身份證號等的脫敏方法,如有其他需要可自行實現 #### 單個調用: 使用場景:適用于單個數據的脫敏 ~~~ DataMaskingTools::setData($model->alipay_user_id)->alipayUserId(); DataMaskingTools::setData($model->mobile)->phone(); ~~~ 實例演示: ![](https://img.kancloud.cn/d5/4e/d54e83ebfb7accca2a734250b6cd2bb9_1316x448.png) #### 數組嵌套: 適用場景:需要脫敏的值在數組內有嵌套的情況 ~~~ $maskingDataAlias = [ 'address' => 'address', 'receive.address' => 'address', 'receive.bind_phone' => 'phone', 'receive.name' => 'name', 'receive.phone' => 'phone', 'user_cert.id_name' => 'name', ]; if (!empty($data['data']['listData'])) { DataMaskingService::setData(['alias' => $maskingDataAlias])->maskDataListByAliasAndNesting($data['data']['listData']); } ~~~ 實例演示: ![](https://img.kancloud.cn/93/a5/93a5450abdc2b16b48c4b8446fe675f9_1207x493.png) #### 簡單數組: 適用場景:需要脫敏的值沒有嵌套的情況 ~~~ $alias = [ 'name' => 'name', ]; if (!empty($data['data']['list'])) { DataMaskingService::setData(['alias' => $alias])->maskDataListByAlias($data['data']['list']); } ~~~ ~~~ /** * 將一個字符串部分字符用*替代隱藏 如110881099**383179X * * @param string $string 待轉換的字符串 * @param int $bengin 起始位置,從0開始計數,當$type=4時,表示左側保留長度 * @param int $len 需要轉換成*的字符個數,當$type=4時,表示右側保留長度 * @param int $type 轉換類型:0,從左向右隱藏;1,從右向左隱藏;2,從指定字符位置分割前由右向左隱藏;3,從指定字符位置分割后由左向右隱藏;4,保留首末指定字符串 * @param string $glue 分割符 * @return string * @author: huangzudeng <237124111@qq.com> * @Date: 2021/6/8 15:14 */ public static function hideStr(string $string, int $bengin = 0, int $len = 4, int $type = 0, $glue = "@") { if (empty($string)) { return $string; } $array = []; if ($type == 0 || $type == 1 || $type == 4) { $strlen = $length = mb_strlen($string); while ($strlen) { $array[] = mb_substr($string, 0, 1, "utf8"); $string = mb_substr($string, 1, $strlen, "utf8"); $strlen = mb_strlen($string); } } switch ($type) { case 0 : for ($i = $bengin; $i < ($bengin + $len); $i++) { isset($array[$i]) && $array[$i] = "*"; } $string = implode("", $array); break; case 1 : $array = array_reverse($array); for ($i = $bengin; $i < ($bengin + $len); $i++) { isset($array[$i]) && $array[$i] = "*"; } $string = implode("", array_reverse($array)); break; case 2 : $array = explode($glue, $string); $array[0] = self::hideStr($array[0], $bengin, $len, 1); $string = implode($glue, $array); break; case 3 : $array = explode($glue, $string); $array[1] = self::hideStr($array[1], $bengin, $len, 0); $string = implode($glue, $array); break; case 4 : $left = $bengin; $right = $len; $tem = array(); for ($i = 0; $i < ($length - $right); $i++) { if (isset($array[$i])) { $tem[] = $i >= $left ? "*" : $array[$i]; } } $array = array_chunk(array_reverse($array), $right); $array = array_reverse($array[0]); for ($i = 0; $i < $right; $i++) { $tem[] = $array[$i]; } $string = implode("", $tem); break; } return $string; } ~~~ * **調用實例:** ~~~ StringHelper::hideStr($data['phone'], 3, 4) ~~~ ~~~ /** * 將一個字符串部分字符用$re替代隱藏 改為最多顯示4個re * * @param string $string 待處理的字符串 * @param int $start 規定在字符串的何處開始, * @param int $length 規定要隱藏的字符串長度。默認是直到字符串的結尾。 * @param string $re 替代符 * @return bool|string * @author rrzj_2609 * @date 2019/6/1 */ public static function hideString($string, $start = 0, $length = 0, $re = '*') { if (empty($string)) { return false; } $strArr = array(); $mbStringLength = mb_strlen($string); while ($mbStringLength) { // 循環把字符串變為數組 $strArr[] = mb_substr($string, 0, 1, 'utf8'); $string = mb_substr($string, 1, $mbStringLength, 'utf8'); $mbStringLength = mb_strlen($string); } $stringLength = count($strArr); $begin = $start >= 0 ? $start : ($stringLength - abs($start)); $end = $last = $stringLength - 1; if ($length > 0) { $end = $begin + $length - 1; } elseif ($length < 0) { $end -= abs($length); } $reLen = 0; for ($i = $begin; $i <= $end; $i++) { if ($reLen < 4) { $strArr[$i] = $re; } else { $strArr[$i] = false; } $reLen++; } if ($begin > $end || $begin > $last || $end > $last) { return false; } array_filter($strArr); return implode('', $strArr); } ~~~ * **調用實例:** ~~~ hideString('420029810@qq.com', 2, -7) ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看