Heim >Backend-Entwicklung >PHP-Problem >Wie verstecke ich einen Teil einer Zeichenfolge mit Sternchen in PHP?

Wie verstecke ich einen Teil einer Zeichenfolge mit Sternchen in PHP?

coldplay.xixi
coldplay.xixiOriginal
2020-07-24 10:07:573352Durchsuche

PHP-Methode zum Ersetzen versteckter Zeichen durch Sternchen in einer Zeichenfolge: Verwenden Sie zum Ersetzen die Funktion [substr_replace($AA,'*','1','2')], wobei der erste Parameter erforderlich ist Die zu verarbeitende Zeichenfolge, der zweite Parameter ist das verwendete Ersetzungssymbol und der dritte und vierte Parameter sind die Zeichenfolgenpositionen, die ersetzt werden müssen.

Wie verstecke ich einen Teil einer Zeichenfolge mit Sternchen in PHP?

PHP-Methode zum Ersetzen versteckter Zeichen durch Sternchen in einer Zeichenfolge:

Kerncode:

<?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 = &#39;12345678901&#39;;
echo hideStr($str,2,4);

Manchmal müssen Sie eine chinesische Substitution in Betracht ziehen, dann können Sie sich auf die folgende Implementierungsmethode beziehen

Für das Problem der Verwendung von * zum Ersetzen bestimmter Teile der Zeichenfolge:

1 🎜>

$username = "linshouyue"; 
echo substr_replace($username,&#39;****&#39;,&#39;3&#39;,&#39;4&#39;);

Funktion substr_replace()

  • Der erste Parameter ist die zu verarbeitende Zeichenfolge

  • Der zweite Parameter ist das Ersetzungssymbol verwendet

  • Der dritte/vierte Parameter ist die Zeichenfolgenposition, die ersetzt werden muss (ersetzt die letzten vier Zeichen ab dem dritten Zeichen)

Aber das Die Funktion hat kein Problem mit der Anzahl der englischen Zeichen/Ziffern, aber sobald sie auf chinesische Zeichen stößt, wird es sehr peinliche Probleme geben, da die Bytes chinesischer Zeichen und englischer Zeichen unterschiedlich sind. Sie können die folgende Methode verwenden Löse es:

/**     * *替换中文汉字
     * @author 月月
     */
    function substr_cut($user_name){
        $strlen     = mb_strlen($user_name, &#39;utf-8&#39;);
        $firstStr     = mb_substr($user_name, 0, 1, &#39;utf-8&#39;);
        $lastStr     = mb_substr($user_name, -1, 1, &#39;utf-8&#39;);
        return $strlen == 2 ? $firstStr . str_repeat(&#39;*&#39;, mb_strlen($user_name, &#39;utf-8&#39;) - 1) : $firstStr . str_repeat("*", $strlen - 2) . $lastStr;
    }

Verwandte Lernempfehlungen:

PHP-Programmierung vom Einstieg bis zur Kompetenz

Das obige ist der detaillierte Inhalt vonWie verstecke ich einen Teil einer Zeichenfolge mit Sternchen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn