Maison > Article > développement back-end > Comment masquer une partie d’une chaîne avec des astérisques en PHP ?
Méthode PHP pour remplacer les caractères masqués par des astérisques dans une chaîne : utilisez la fonction [substr_replace($AA,'*','1','2')] pour remplacer, où le premier paramètre est le requis La chaîne à traiter, le deuxième paramètre est le symbole de remplacement utilisé et les troisième et quatrième paramètres sont les positions de chaîne qui doivent être remplacées.
Méthode PHP pour remplacer les caractères masqués par des astérisques dans une chaîne :
Code principal :
<?php /** +---------------------------------------------------------- * 将一个字符串部分字符用*替代隐藏 +---------------------------------------------------------- * @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 处理后的字符串 +---------------------------------------------------------- */ 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);
Parfois, vous devez envisager la substitution chinoise, vous pouvez alors vous référer à la méthode d'implémentation suivante
Pour le problème de l'utilisation de * pour remplacer certaines parties de la chaîne :
Exemple :
$username = "linshouyue"; echo substr_replace($username,'****','3','4');
substr_replace()
fonction
Le premier paramètre est la chaîne à traiter
Le deuxième paramètre est le symbole de remplacement utilisé
Le troisième/quatrième paramètre est la position de la chaîne qui doit être remplacée (en remplaçant les quatre derniers caractères à partir du troisième caractère)
Mais cette fonction n'a aucun problème avec le nombre de caractères/chiffres anglais, mais une fois qu'elle rencontrera des caractères chinois, il y aura des problèmes très embarrassants, car les octets de caractères chinois et de caractères anglais sont différents. Vous pouvez utiliser la méthode suivante pour. résolvez-le :
/** * *替换中文汉字 * @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; }
Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!