Maison  >  Article  >  développement back-end  >  Comment remplacer une partie du contenu en php

Comment remplacer une partie du contenu en php

藏色散人
藏色散人original
2022-11-25 09:27:431587parcourir

Comment remplacer une partie du contenu par PHP : 1. Créez un exemple de fichier PHP ; 2. Calculez la longueur de la chaîne via "mb_strlen($username,'utf-8');" 3. Interceptez la première partie du contenu. chaîne en fonction de la longueur ; 4. , interceptez la dernière partie de la chaîne ou supprimez les deux premières parties de la chaîne ; 5. Remplacez les caractères par "str_replace_once".

Comment remplacer une partie du contenu en php

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 8.1, ordinateur Dell G3.

Comment remplacer une partie du contenu en php ?

Opération de remplacement du caractère de la partie centrale de la chaîne chinoise php

1. Étapes : 1. Calculez la longueur

2 Interceptez la première partie de la chaîne en fonction de la longueur

3. 4. Interceptez la dernière partie de la chaîne de caractères ou supprimez les deux premières parties de la chaîne

5. Remplacez la partie centrale de la chaîne par un astérisque

6. Concaténez les chaînes

2. Ecriture du code :

/**
* 中文字符串中间部分替换(最多替换二分之一)
* @param string $username 中文字符串
* @return string 处理后的字符串
*/
function ceshi($username){
    // 计算字符串长度,无论汉字还是英文字符全部为1
    $length = mb_strlen($username,'utf-8');
    
    // 截取第一部分代码
    $firstStr1 = mb_substr($username,0,ceil($length/4),'utf-8');
    // 截取中间部分代码
    $firstStr = mb_substr($username,ceil($length/4),floor($length/2),'utf-8');
    // (方法一)截取剩余字符串
    $firstStr2 = mb_substr($username,ceil($length/4) + floor($length/2), floor(($length+1)/2 - 1),'utf-8');
    // (方法二)是直接去掉前两部分字符串
    // $firstStr2 = "";
    // if($firstStr && $username){
        // $firstStr2 = str_replace_once($username,$firstStr1,"");
        // $firstStr2 = str_replace_once($firstStr2,$firstStr,"");
    // }
    
    return $firstStr1 . str_repeat("*",mb_strlen($firstStr,'utf-8')) . $firstStr2;
}
 
 
/**
* 替换字符串中的某些字符,仅替换一次,且替换内容必须在原始字符串内
* @param string $username 字符串
* @param string $find 替换内容
* @param string $replace 目标内容
* @param string 处理后的额字符串
*/
function str_replace_once($username,$find,$replace)
{   
    // 查询出字符串第一次出现的位置
    $pos = mb_strpos($username,$find);
    // 替换目标内的信息
    return substr_replace($username, $replace, $pos, strlen($find));
}

3. . Analyse de fonction

1. mb_strlen()

Fonction : Renvoie la longueur de la chaîne. Avantages : Vous pouvez définir le codage des caractères pour renvoyer le nombre de caractères correspondant, ce qui résout bien le problème de longueur des chaînes chinoises.

Syntaxe : strlen(string $str, string $encoding)

str : contenu de la chaîne

encoding : format d'encodage Par exemple : gbk/utf8/gb2312/leave blank Différents formats d'encodage ont des longueurs différentes pour le chinois, par défaut pour utf8

Exemple de code :

$str='33三三three';
echo strlen($str).&#39;<br>&#39;;  //13   数字+中文+英文=2+6+5
echo mb_strlen($str,&#39;utf8&#39;).&#39;<br>&#39;;//9 //  数字+中文+英文=2+2+5
echo mb_strlen($str,&#39;gbk&#39;).&#39;<br>&#39;;//10   数字+中文+英文=2+3+5
echo mb_strlen($str,&#39;gb2312&#39;).&#39;<br>&#39;;//11     数字+中文+英文=2+4+5

2, mb_substr()

Fonction : Renvoie une partie de la chaîne, Avantage : Convient à la segmentation des caractères chinois

Syntaxe : mb_substr ( string $str , int $start , int $length , string $encoding)

str : contenu de la chaîne

start : position de départ Nombre positif - commence à la position spécifiée de la chaîne ; nombre négatif - commence à la position spécifiée à partir de la fin de la chaîne ; string Commençant aux caractères

length: length Nombre positif - renvoyé à partir de la position du paramètre de début Nombre négatif - renvoyé à partir de la fin de la chaîne

encoding: encoding Par exemple: gbk/utf8/gb2312/leave blank Différents formats d'encodage sont différent pour la longueur chinoise Différent, utilisez généralement utf8 avec mb_strlen

Remarque : 1). Si le paramètre de début est un nombre négatif et que la longueur est inférieure ou égale à start, la longueur est 0

2). peut être utilisé

Exemple de code

$str=&#39;33三三three&#39;;
echo mb_substr($str,0,3,&#39;utf8&#39;).&#39;<br>&#39;;  // 33三三

3. str_repeat()

Fonction : Répéter la chaîne un nombre de fois spécifié

Syntaxe : str_repeat(string $str,int $repeat)

str : String

repeat : Nombre de répétitions

Exemple de code

$str=&#39;33三三&#39;;
echo str_repeat($str,10).&#39;<br>&#39;;  // 33三三33三三33三三33三三33三三33三三33三三33三三33三三33三三

4, mb_stropos()

Fonction : Rechercher la première occurrence d'une chaîne dans une autre chaîne (non sensible à la casse)

Syntaxe : mb_stropos(string $str,string $find,int $ start,string $encoding )

str: Chaîne d'origine

find: Contenu de la requête

start: Position de départ de la recherche, la valeur par défaut est 0

encoding: Format d'encodage Utf8 par défaut Utilisez normalement utf8

Exemple de code

$str=&#39;33三二一&#39;;
echo mb_strpos($str,"一",0).&#39;<br>&#39;;  //  4
echo mb_strpos($str,"一",0,&#39;utf8&#39;).&#39;<br>&#39;;//  4
echo mb_strpos($str,"一",0,&#39;gbk&#39;).&#39;<br>&#39;;//   5

5, substr_replace()

Fonction : Remplacer une partie d'une chaîne par une autre chaîne

Syntaxe : substr_replace(string $str, string $replacement, int $start, int $length)

str : informations sur la chaîne

replacement : doit être chaîne remplacée

début : position de départ

longueur : longueur

exemple de code

echo substr_replace("天气晚来秋","沉",3,3);  // 天沉晚来秋

Remarque : lors du remplacement de caractères chinois, vous devez faire attention aux trois octets d'un caractère chinois

Apprentissage recommandé : "

Tutoriel vidéo PHP

"

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn