主頁 > 知識庫 > PHP中將一個字符串部分字符用星號*替代隱藏的實現(xiàn)代碼

PHP中將一個字符串部分字符用星號*替代隱藏的實現(xiàn)代碼

熱門標簽:怎么向銷售公司推銷外呼系統(tǒng) 高德地圖標注家 廣東地市地圖標注 外呼系統(tǒng)撥打暫時無法接通 哪里辦理400電話 仁和怎么申請400開頭的電話 江西手機自動外呼防封系統(tǒng)是什么 廣州防封卡外呼系統(tǒng)多少錢一個月 長春人工外呼系統(tǒng)服務商

有時候我們在開發(fā)中會遇到這樣一種情況,例如:顯示手機號我們需要將中間4位遮擋掉,一般使用“*”號代替,或是顯示身份證號碼是為了保護個人信息也同樣需要遮擋掉4位,故可用到下列方式、代碼進行實現(xiàn):

核心代碼

?php 
 
/**
 +----------------------------------------------------------
 * 將一個字符串部分字符用*替代隱藏
 +----------------------------------------------------------
 * @param string $string 待轉換的字符串
 * @param int  $bengin 起始位置,從0開始計數(shù),當$type=4時,表示左側保留長度
 * @param int  $len  需要轉換成*的字符個數(shù),當$type=4時,表示右側保留長度
 * @param int  $type  轉換類型:0,從左向右隱藏;1,從右向左隱藏;2,從指定字符位置分割前由右向左隱藏;3,從指定字符位置分割后由左向右隱藏;4,保留首末指定字符串
 * @param string $glue  分割符
 +----------------------------------------------------------
 * @return string 處理后的字符串
 +----------------------------------------------------------
 */
function hideStr($string, $bengin = 0, $len = 4, $type = 0, $glue = "@") {
	if (empty($string))
		return false;
	$array = 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);
		}
	}
	if ($type == 0) {
		for ($i = $bengin; $i  ($bengin + $len); $i++) {
			if (isset($array[$i]))
				$array[$i] = "*";
		}
		$string = implode("", $array);
	} else if ($type == 1) {
		$array = array_reverse($array);
		for ($i = $bengin; $i  ($bengin + $len); $i++) {
			if (isset($array[$i]))
				$array[$i] = "*";
		}
		$string = implode("", array_reverse($array));
	} else if ($type == 2) {
		$array = explode($glue, $string);
		$array[0] = hideStr($array[0], $bengin, $len, 1);
		$string = implode($glue, $array);
	} else if ($type == 3) {
		$array = explode($glue, $string);
		$array[1] = hideStr($array[1], $bengin, $len, 0);
		$string = implode($glue, $array);
	} else if ($type == 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);
	}
	return $string;
}
 
 
$str = '12345678901';
echo hideStr($str,2,4);

有時候需要考慮中文的替換那么可以參考下面的實現(xiàn)方法

對于字符串某部分使用*號替換的問題:

1.實例:

$username = "linshouyue"; 
echo substr_replace($username,'****','3','4'); 

substr_replace()函數(shù)  

1.1)第一參數(shù)為需處理的字符串
1.2)第二參數(shù)為使用的替換符號
1.3)第三/四參數(shù)為需要替換的字符串位置(從第三個字符開始替換后四位字符)

但是該函數(shù)對于英文字符/數(shù)字數(shù)沒有任何問題得,但是一旦遇到漢字就會出現(xiàn)很尷尬的問題,因為漢字與英文字符的字節(jié)是不一樣的,可以使用一下方法解決:

/**     * *替換中文漢字

     * @author 月月

     */
    function substr_cut($user_name){
        $strlen     = mb_strlen($user_name, 'utf-8');
        $firstStr     = mb_substr($user_name, 0, 1, 'utf-8');
        $lastStr     = mb_substr($user_name, -1, 1, 'utf-8');
        return $strlen == 2 ? $firstStr . str_repeat('*', mb_strlen($user_name, 'utf-8') - 1) : $firstStr . str_repeat("*", $strlen - 2) . $lastStr;
    }

好了,這篇文章就介紹到這了

您可能感興趣的文章:
  • PHP常用字符串函數(shù)用法實例總結
  • php生成隨機數(shù)/生成隨機字符串的方法小結【5種方法】
  • php7 參數(shù)、整形及字符串處理機制修改實例分析
  • php字符串函數(shù) str類常見用法示例
  • php變量與字符串的增刪改查操作示例
  • PHP數(shù)組與字符串互相轉換實例
  • php將字符串轉換為數(shù)組實例講解
  • php反序列化長度變化尾部字符串逃逸(0CTF-2016-piapiapia)
  • PHP字符串與數(shù)組處理函數(shù)用法小結
  • PHP生成隨機字符串實例代碼(字母+數(shù)字)
  • php常用經(jīng)典函數(shù)集錦【數(shù)組、字符串、棧、隊列、排序等】
  • PHP入門學習之字符串操作

標簽:廈門 梅河口 黔東 惠州 海北 文山 湘西 濮陽

巨人網(wǎng)絡通訊聲明:本文標題《PHP中將一個字符串部分字符用星號*替代隱藏的實現(xiàn)代碼》,本文關鍵詞  PHP,中將,一個,字符串,部分,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP中將一個字符串部分字符用星號*替代隱藏的實現(xiàn)代碼》相關的同類信息!
  • 本頁收集關于PHP中將一個字符串部分字符用星號*替代隱藏的實現(xiàn)代碼的相關信息資訊供網(wǎng)民參考!
  • 推薦文章