substr_replace()替换子字符串

发布时间:2022-08-30浏览次数:786 次
之前我们学习了PHP中截取子字符串的substr()函数,这节我们学习一个与之有些类似的替换子字符串的函数,substr_replace(),顾名思义,该函数为

之前我们学习了PHP中截取子字符串的substr()函数,这节我们学习一个与之有些类似的替换子字符串的函数,substr_replace(),顾名思义,该函数为替换原始字符串中的(连续的)一部分,substr_replace()常见的使用场景为:对一个电话号码中间的四位进行模糊处理、文章列表页面显示文章概要,并附带查看详细内容的超链接等。需与str_replace()等函数进行区分。

基本语法:

substr_replace(string $string, string $replace, int $offset[, int $length]);

其中$string为原始要被检查替换的字符串,$replace为用来替换的字符串,$offset为替换起点,即规定在原始字符串何处开始替换,$length为可选参数,规定替换的长度。

常规用法:

echo substr_replace($string,'xxx',6); 
// 输出 Hello xxx
echo substr_replace($string,'xxx',6,3); 
// 输出 Hello xxxld

$offset参数与$length参数与substr()函数比较相似。

在未指定$length的情况下,substr_replace()会替换从$offset位置开始到原始字符串结束的所有字符。如果指定了$length,则只替换指定长度的字符。

如果$offset为负值,则开始替换的起点不在是字符串起始位置,而是从字符串末尾进行反推计算来确定。

$string = "Hello World";
echo substr_replace($string,'xxx',-3); // 输出 Hello Woxxx
echo substr_replace($string,'xxx',-20); // 输出 xxx

其余用法,如$length给负值等情形,均可以参考substr()函数。

注意:如果将$offset和$length参数均指定为0,则会将替换字符串插入到原始字符串之前,如下:

$string = "Hello World";
echo substr_replace($string,'Title:',0,0); 
// 输出: Title:Hello World

substr_replace()函数,常用于在段落文字较长时,进行缩略显示,如文章列表中的文章简介,将多余的部分替换为超链接形式,如下:

$str = "This is a long paragraph";
echo substr_replace($str,'<a href="#">...</a>',10);
// 输出:This is a ...

substr_replace()函数处理数组:

可能容易被大家忽略的是substr_replace()函数可以用来对数组进行替换处理,当substr_replace()函数用来处理数组时,$start指的是从数组每一项中的$start位置其开始处理。如下:

$array = ['ABC','AAA','CCC','BBB'];
$res = substr_replace($array,'-',1,1);
var_dump($res);
// 输出:['A-C','A-A','C-C','B-B'];

另外需要注意,substr_replace()函数与str_replace()函数的区别。

扫一扫,在手机上查看