PHP String substr_replace() 函数
substr_replace 是 PHP 的内置函数,它可以在字符串中用另一个文本替换字符串的部分。
PHP 4+ 版本 支持此函数。在原始字符串中的索引作为参数传递给此函数,将进行替换。也可以将字符串数组作为参数传递给此函数,在这种情况下,将在每一轮中为每个字符串进行替换 (参见示例 5)。
注意:substr_replace()是一个二进制安全的函数。
语法
substr_replace() 的语法如下,它接受四个参数。
substr_replace( string,replacement, start,length)
参数
substr_replace()函数由四个参数组成,其中有三个参数是必须传递的,而$length参数是可选的。以下是对这些参数的详细讨论:
$string (required) – 这是该函数的主要字符串参数,指定要进行替换的输入字符串。这是一个必需参数。
$replacement (required) – 这是substr_replace()的必需参数,指定要插入的字符串。$replacement包含要进行替换的字符串。
$start (required) – 这也是一个必需参数,指定替换需要从哪个位置开始。该参数是一个整数值。对于该参数有三种情况:
- 如果传入的$start值为 正数 ,则替换从字符串中指定的位置开始。
- 如果$start为 负值 ,则替换从字符串的 末尾 指定的位置开始。
- 如果$start为 0 ,则替换将从字符串的第一个字符开始。
$length (optional) – 这是该函数的可选参数,指定要在字符串中替换多少个字符。如果在substr_replace()中没有传入$length参数,则替换会一直进行到字符串的末尾。对于该参数也有三种情况:
- 如果$length的值是正数,则给定的长度的字符串将被新字符串替换。
- 如果$length的值为负数,则在替换字符串后,字符的数量应该保留在末尾。
- 如果$length为0,则插入操作将替换。
返回值
substr_replace()在替换完成后返回一个字符串。如果字符串是一个数组,则返回一个数组。
更新日志
从PHP 4.3.3开始,所有参数都接受数组。
示例
这里提供了一些示例,通过这些示例我们可以学习substr_replace()函数的实际应用。
示例1
<?php
replace = substr_replace("Hello earth", "javatpoint", 6);
echoreplace;
?>
输出:
在上面的示例中,替换从第6个位置开始。”earth” 被替换为 “javatpoint”。
Hello javatpoint
示例2
<?php
//replacement from the front of string
replace1 = substr_replace("Hello javatpoint", "PHP", 6);
echoreplace1;
//replacement from end of the string
replace2 = substr_replace("Hello javatpoint", "PHP", -10);
echoreplace2;
?>
输出:
在上面的示例中,替换从第一个情况的第6个位置开始。在第二个情况中,传递了一个负值,所以替换是从字符串的第10个位置在末尾进行的。
Hello PHP
Hello PHP
示例3
<?php
replace = substr_replace("PHP!","Hello " , 0, 0);
echoreplace;
?>
输出:
在上面的示例中,我们使用了第四个 $length 参数,其传递的值为0。因此,插入了字符串”Hello”而不是替换。
Hello PHP!
示例4
<?php
replace = substr_replace("Welcome javatpoint","to " , 8, 0);
echoreplace;
?>
输出:
Welcome to javatpoint
示例5: 同时替换多个字符串
<?php
input_str = array('X: AAAA', 'Y: AAAA', 'Z: AAAA');
//each AAA is replaced with string BBB.
echo implode('; ', substr_replace(input_str, 'BBBB',3,4)). '</br>';
replace = array('XXXX', 'YYYY', 'ZZZZ');
//each AAA is replaced with different values.
echo implode('; ', substr_replace(input_str, replace,3,4)). '</br>';
//Replacement of different number of character each timelength = array(2,3,4);
echo implode('; ', substr_replace(input_str,replace,3,$length)). '</br>';
?>
输出:
X: BBBB; Y: BBBB; Z: BBBB
X: XXXX; Y: YYYY; Z: ZZZZ
X: XXXXAA; Y: YYYYA; Z: ZZZZ
注意: 在此处使用implode()函数将数组转换为字符串。