天天看點

PHP用星号隐藏部份使用者名、身份證、IP、手機号等執行個體

PHP用星号隐藏部份使用者名、身份證、IP、手機号等執行個體

這篇文章主要介紹了PHP用星号隐藏部份使用者名、身份證、IP、手機号等執行個體,需要的朋友可以參考下

一、仿淘寶評論購買記錄隐藏部分使用者名,以下代碼親測可用。

複制代碼代碼如下:

function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')

{

    if($code == 'UTF-8')

    {

        $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";

        preg_match_all($pa, $string, $t_string);

        if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen));

        return join('', array_slice($t_string[0], $start, $sublen));

    }

    else

        $start = $start*2;

        $sublen = $sublen*2;

        $strlen = strlen($string);

        $tmpstr = '';

        for($i=0; $i< $strlen; $i++)

        {

            if($i>=$start && $i< ($start+$sublen))

            {

                if(ord(substr($string, $i, 1))>129)

                {

                    $tmpstr.= substr($string, $i, 2);

                }

                else

                    $tmpstr.= substr($string, $i, 1);

            }

            if(ord(substr($string, $i, 1))>129) $i++;

        }

        //if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";

        return $tmpstr;

}

使用示例:

$str = "如來神掌";

echo cut_str($str, 1, 0).'**'.cut_str($str, 1, -1);

//輸出:如**掌

二、PHP身份證号後4位用星号隐藏

一個很簡單的問題,想把身份證的号生日的4位隐藏,一開始查函數居然沒有看到,然後用了好幾個函數處理,覺得太麻煩就上網搜,後來發現有一個函數就能直接處理,是以記錄一下:

substr_replace()函數簡介:

定義和用法

substr_replace() 函數把字元串的一部分替換為另一個字元串。

文法

substr_replace(string,replacement,start,length)

參數 描述

string     必需。規定要檢查的字元串。

replacement 

    必需。規定要插入的字元串。

start 

必需。規定在字元串的何處開始替換。

正數 - 在第 start 個偏移量開始替換

負數 - 在從字元串結尾的第 start 個偏移量開始替換

0 - 在字元串中的第一個字元處開始替換

length 

可選。規定要替換多少個字元。

正數 - 被替換的字元串長度

負數 - 從字元串末端開始的被替換字元數

0 - 插入而非替換

使用執行個體:

[code]

echo strlen($idcard)==15?substr_replace($idcard,"****",8,4):(strlen($idcard)==18?substr_replace($idcard,"****",10,4):"身份證位數不正常!");

[/code]

三、将IP最後一位替換為星号

将IP最後一位替換為星号 代碼如下:

方法一:

<?php

str = '1.1.1.1';

reg = '/((?:\d+\.){3})\d+/';

echo preg_replace(reg, "\\1*", str);

?>

方法二:

<?php 

$ip =$_SERVER['REMOTE_ADDR'];

  $ip_arr= explode('.', $ip);

  $ip_arr[3]='*';

  $ip= implode('.', $ip_arr);

echo $ip;

四、手機号中間用*星号隐藏的方法五則

//方法一

function mobile_asterisk($mobile)

 $mobile_asterisk = substr($mobile,0,4)."****".substr($mobile,8,3);

 return $mobile_asterisk;

echo mobile_asterisk("15810904579");

//方法二

echo preg_replace("/(1\d{1,4})\d\d\d\d(\d{3,4})/", "\$1****\$2", "15810904579");

//方法三

$haoma="15012345678"; 

echo preg_replace("/(d{3})d{5}/","$1*****",$haoma); 

//輸出150*****678

//方法四

$tel1 = "13888111188";

$tel2 = "+8613888111188";

$tel3 = "0861088111188";

$tel4 = "086-010-88111188";

echo preg_replace('/(^.*)\d{4}(\d{4})$/','\\1****\\2',$tel1),"\n";

echo preg_replace('/(^.*)\d{4}(\d{4})$/','\\1****\\2',$tel2),"\n";

echo preg_replace('/(^.*)\d{4}(\d{4})$/','\\1****\\2',$tel3),"\n";

echo preg_replace('/(^.*)\d{4}(\d{4})$/','\\1****\\2',$tel4),"\n";

//方法五

//屏蔽電話号碼中間的四位數字

function hidtel($phone)

    $IsWhat = preg_match('/(0[0-9]{2,3}[\-]?[2-9][0-9]{6,7}[\-]?[0-9]?)/i',$phone); //固定電話

    if($IsWhat == 1)

        return preg_replace('/(0[0-9]{2,3}[\-]?[2-9])[0-9]{3,4}([0-9]{3}[\-]?[0-9]?)/i','$1****$2',$phone);

        return  preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone);