[精讚] [會員登入]
2496

[PHP] 將字串的部分加上遮罩的函式

有些資料會想要隱藏部分的字元,例如身分證號或信用卡號、電話等。我寫了一個函式來完成這個功能。

分享此文連結 //n.sfs.tw/10970

分享連結 [PHP] 將字串的部分加上遮罩的函式@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-22 22:22:27 最後編修
2017-04-10 00:04:33 By 張○○
 

很簡單的功能,就安全上的理由,主要是把字串的中間部分加上 '*'。

第二個變數 $masknum 如果是負的,代表要留言不 MASK 的個數。

補充:此函數不處理中文字,輸入字串須大於2個字元才會加遮罩。


 /**
  * function MaskString(): Mask a string for security.
  * @scope public
  * @param string $s : input string, >2 characters long string
  * @param interger $masknum : the number of characters in the middle of a string to be masked,
           if masknum is negative, the returned string will leave abs(masknum) characters in 
           both end untouched.
  * @return a masked string
  * ex. MaskString( "12345678",3)  : 123***78
  * ex. MaskString( "12345678",-3)  : 12*****8
  */
  function MaskString($s, $masknum=3){ 
    $len= strlen($s);
    if($masknum<0) $masknum = $len + $masknum;
    if($len<3)return $s;
    elseif( $len< $masknum+1)return substr( $s, 0,1). str_repeat('*',$len-2). substr( $s, -1);
    $right=  ($len-$masknum)>>1;
    $left= $len- $right- $masknum;
    return substr( $s, 0,$left). str_repeat('*',$len-$right-$left). substr( $s, -$right);
  }

原文 2011-05-14 16:31:54

END

你可能感興趣的文章

[PHP] CodeIgniter 3+pure+smarty安裝及環境設置1/2 PHP framework CodeIgniter 3+ pure CSS +smarty Template Engine的整合

PHP程式經驗 #2 -- print和echo的差異 常在寫php的人一定會想知道echo和print這兩個函數有什麼不一樣 驗證 1. 比較print 和echo 函式的執

[CI3] 使用和修改日曆類別 calendar library CI3有一個日曆圖書館 library,可以快速的建立一個日曆,但是想修改讓他更棒

使用strcmp來判斷日期是否介於某日期之間 要比較現在日期是否在兩個日期之間,使用字串比對的方法

[Smarty5] 如何在樣版中使用php本身的函式 解決 smarty5版後不能直接叫用 php函式的問題

[PHP] 讀取作業系統程式執行結果 PHP讀取作業系統程式執行結果

隨機好文

[HP DL380G7] 生效啟動第3,4片網卡/開啟或關閉內建的網卡 HP DL380G7 預設第3,4片網卡裝完系統後找不到,難道是壞了?要怎麼辦?

[bc] linux 的計算機 bc 設定小數位數、計算π、次方根 linux 的計算機 bc 設定小數位數、計算π、次方根

UTF-8的網頁但IE8一片空白 UTF8編碼的網頁在Firefox 正常顯示、但IE8 就是空白,IE8編碼設定是「自動偵測」可是自動偵測到的是 big5...

世紀帝國征服者新版本--被遺忘的帝國 世紀帝國征服者新版本--被遺忘的帝國 世紀二代的征服者是精典遊戲中的精典,aofe更好玩...

精讚的版面變化 ▓此文僅作為舊文的記錄▓ 這篇文章為了紀念改版完成而撰寫。 原本的部落格是民國97年的作品,那時還是用舊有的技術來寫,很