php メソッドでコンテンツの一部を置き換えます: 1. php サンプル ファイルを作成します; 2. "mb_strlen($username,'utf-8');" を通じて文字列の長さを計算します; 3. 最初の文字列をインターセプトします文字列の長さに応じた部分; 4. 文字列の最後の部分をインターセプトするか、文字列の最初の 2 つの部分を削除します; 5. 「str_replace_once」によって文字を置換します。
このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 8.1、Dell G3 コンピューター。
php のコンテンツの一部を置き換えるにはどうすればよいですか?
php 中国語文字列の中間部分の文字置換操作
1. 手順: 1. 長さを計算します
2. 文字列の最初の部分を次のようにインターセプトします。 length
3. 文字列の中間部分をインターセプト
4. 文字列の最後の部分をインターセプトするか、文字列の最初の 2 つの部分を削除します
5.アスタリスクが付いた文字列の中央部分
6. 接続文字列
2. コードの記述:
/** * 中文字符串中间部分替换(最多替换二分之一) * @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. 関数分析
1. mb_strlen( )
関数: 戻り文字 文字列の長さ。利点: 対応する文字数を返すように文字エンコーディングを設定できるため、中国語の文字列の長さの問題がうまく解決されます。
構文: strlen(string $str, string $encoding)
str: 文字列の内容
encoding: エンコード形式 例: gbk/utf8/gb2312/leave空白 異なる 中国語ではエンコード形式の長さが異なり、デフォルトは utf8
コード例:
$str='33三三three'; echo strlen($str).'<br>'; //13 数字+中文+英文=2+6+5 echo mb_strlen($str,'utf8').'<br>';//9 // 数字+中文+英文=2+2+5 echo mb_strlen($str,'gbk').'<br>';//10 数字+中文+英文=2+3+5 echo mb_strlen($str,'gb2312').'<br>';//11 数字+中文+英文=2+4+5
2, mb_substr()
関数: 文字列の一部を返す、利点 : 中国語の文字の分割に適しています
構文: mb_substr (string $str, int $start, int $length, string $encoding)
str: String content
start: 開始位置 正の数 - 文字列の指定した位置から開始; 負の数 - 文字列の末尾からの指定した位置から開始; 0 - 文字列の最初の文字から開始
length: 長さ 正の数値 - 開始パラメータの位置から返される 負の数値 - 文字列の末尾から返される
encoding: エンコーディング 例: gbk/utf8/gb2312/leaveblank エンコーディング形式が異なると長さも異なります中国語の場合、通常は mb_strlen と組み合わせます utf8
を使用します注: 1) start パラメータが負の数で、長さが start 以下の場合、長さは 0
2)一般的には、utf8
コード例
$str='33三三three'; echo mb_substr($str,0,3,'utf8').'<br>'; // 33三三
3 を使用してください。 str_repeat()
関数: 文字列を指定された回数だけ繰り返します
構文: str_repeat(string $str,int $repeat)
str:String
repeat:繰り返し数
コード例
$str='33三三'; echo str_repeat($str,10).'<br>'; // 33三三33三三33三三33三三33三三33三三33三三33三三33三三33三三
4, mb_stropos( )
関数: 別の文字列内で最初に出現する位置で文字列を検索します (大文字と小文字は区別されません)
構文: mb_stropos(string $str,string $find,int $start,string $encoding)
str : 元の文字列
find: クエリの内容
start: 検索開始位置、デフォルトは 0
encoding: エンコード形式デフォルトutf8 通常は utf8 を使用します
コード例
$str='33三二一'; echo mb_strpos($str,"一",0).'<br>'; // 4 echo mb_strpos($str,"一",0,'utf8').'<br>';// 4 echo mb_strpos($str,"一",0,'gbk').'<br>';// 5
5 substr_replace()
関数: 文字列の一部を別の文字列に置換します
構文: substr_replace( string $str,string $replacement,int $start,int $length)
str: 文字列情報
replacement: 置換される文字列
start: 開始位置
length: length
コード例
echo substr_replace("天气晚来秋","沉",3,3); // 天沉晚来秋
注: 中国語の文字を置換するときは、中国語の文字の 3 バイトに注意する必要があります。
推奨される学習: 「PHP ビデオ チュートリアル >>
」以上がPHPの内容の一部を置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。