欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2019年09月08日 13:18:00   作者:Zhihua_W  
這篇文章主要介紹了PHP中將一個字符串部分字符用星號*替代隱藏的實現(xiàn)代碼,有時候我們需要將部分內(nèi)容隱藏那么就可能需要下面的代碼了,需要的朋友可以參考下

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

核心代碼

<?php 
 
/**
 +----------------------------------------------------------
 * 將一個字符串部分字符用*替代隱藏
 +----------------------------------------------------------
 * @param string $string 待轉(zhuǎn)換的字符串
 * @param int  $bengin 起始位置,從0開始計數(shù),當(dāng)$type=4時,表示左側(cè)保留長度
 * @param int  $len  需要轉(zhuǎn)換成*的字符個數(shù),當(dāng)$type=4時,表示右側(cè)保留長度
 * @param int  $type  轉(zhuǎn)換類型: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;
    }

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

相關(guān)文章

  • php數(shù)組函數(shù)序列之a(chǎn)rray_sum() - 計算數(shù)組元素值之和

    php數(shù)組函數(shù)序列之a(chǎn)rray_sum() - 計算數(shù)組元素值之和

    array_sum() 函數(shù)返回數(shù)組中所有值的總和。如果所有值都是整數(shù),則返回一個整數(shù)值。如果其中有一個或多個值是浮點數(shù),則返回浮點數(shù)
    2011-10-10
  • 淺析PHP 按位與或 (^ 、&)

    淺析PHP 按位與或 (^ 、&)

    本篇文章是對PHP中的按位與或 (^ 、&)進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • PHP預(yù)定義接口——Iterator用法示例

    PHP預(yù)定義接口——Iterator用法示例

    這篇文章主要介紹了PHP預(yù)定義接口——Iterator用法,結(jié)合實例形式分析了PHP Iterator(迭代器)接口相關(guān)原理、定義與使用方法,需要的朋友可以參考下
    2020-06-06
  • PHP傳輸base64數(shù)據(jù)不完整的解決方法

    PHP傳輸base64數(shù)據(jù)不完整的解決方法

    最近在做OCR增值稅務(wù)處理時,接口是通過圖片轉(zhuǎn)base64提交處理然后返回數(shù)據(jù)的,通過在線工具進行測試,發(fā)現(xiàn)傳遞過去的數(shù)據(jù)可以使用,接收到的數(shù)據(jù)卻提示損壞,所以本文給大家介紹了PHP傳輸base64數(shù)據(jù)不完整的解決方法,需要的朋友可以參考下
    2024-05-05
  • PHP命名空間namespace用法實例分析

    PHP命名空間namespace用法實例分析

    這篇文章主要介紹了PHP命名空間namespace用法,結(jié)合實例形式分析了php中命名空間的功能、使用方法及相關(guān)注意事項,需要的朋友可以參考下
    2016-09-09
  • php開發(fā)微信支付獲取用戶地址

    php開發(fā)微信支付獲取用戶地址

    微信支付的收貨地址共享功能,主要是統(tǒng)一的管理微信用戶個人的收貨地址,其收貨地址可以被應(yīng)用于所有可以調(diào)用的開發(fā)者。用戶的收貨地址包含了很多個人信息,因此該接口必須要通過申請,申請的方式可以在mp平臺上查看到。
    2015-10-10
  • php異常處理技術(shù),頂級異常處理器

    php異常處理技術(shù),頂級異常處理器

    php對異常的處理與java一樣,用到的是try{}catch(){}
    2012-06-06
  • Apache+PHP+MySQL搭建PHP開發(fā)環(huán)境圖文教程

    Apache+PHP+MySQL搭建PHP開發(fā)環(huán)境圖文教程

    這篇文章主要介紹了Apache+PHP+MySQL搭建PHP開發(fā)環(huán)境圖文教程,文中通過圖文流程介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 10條php編程小技巧

    10條php編程小技巧

    這篇文章主要介紹了10條php編程小技巧,本文是實際開發(fā)經(jīng)驗的總結(jié),注意到了一些編程細節(jié),需要的朋友可以參考下
    2015-07-07
  • 如何提高PHP速度

    如何提高PHP速度

    如何提高PHP速度...
    2007-02-02

最新評論