在PHP中,字符串函数 substr_replace() 用来替换字符串的子串。
函数语法:
substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] ) : mixed
函数参数说明:
参数 | 描述 |
---|---|
string | 必需。规定要检查的字符串。 |
replacement | 必需。规定要插入的字符串。 |
start | 必需。规定在字符串的何处开始替换。
|
length | 可选。规定要替换多少个字符。默认是与字符串长度相同。
|
substr_replace() 函数用来将字符串 string 的副本中由 start 和可选的 length 参数限定的子字符串使用 replacement 进行替换,返回结果字符串。如果 string 是个数组,那么也将返回一个数组。
举例1,替换子串:
<?php // 替换字符串的子串 $rawStr = 'hello world'; // 从字符串的索引为6的字符开始替换 $res1 = substr_replace($rawStr, 'china', 6); // 从字符串的尾部第5个字符开始替换 $res2 = substr_replace($rawStr, 'china', -5); // 输出 echo $res1; echo '<br>'; echo $res2;
以上代码输出如下(指定正数和相应的负数结果相同):
hello china hello china
举例2,替换子串(指定start和length):
<?php // 替换字符串的子串 $rawStr = 'hello world'; // 从字符串的索引为6的字符开始替换,替换长度为0 $res1 = substr_replace($rawStr, 'china', 6, 0); // 从字符串的尾部第5个字符开始替换,替换长度为0 $res2 = substr_replace($rawStr, 'china', -5, 0); // 从字符串的尾部第5个字符开始替换,尾部剩余不替换字符个数为5 $res3 = substr_replace($rawStr, 'china', -5, -5); // 从字符串的尾部第5个字符开始替换,尾部剩余不替换字符个数为4(world的w字符被替换,剩余orld) $res4 = substr_replace($rawStr, 'china', -5, -4); // 输出 echo $res1; echo '<br>'; echo $res2; echo '<br>'; echo $res3; echo '<br>'; echo $res4;
以上代码输出如下(请注意不同替换长度时的结果):
hello chinaworld hello chinaworld hello chinaworld hello chinaorld
举例3,数组子串替换(原理和字符串一样):
<?php // 替换数组的子串 $rawArr = ['hello', 'world']; // 数组的每个子串单独进行替换(原理和字符串一样) $res1 = substr_replace($rawArr, ['hi', 'china'], 0); var_dump($res1); // 数组的每个子串单独进行替换(原理和字符串一样,替换2个字符) $res2 = substr_replace($rawArr, ['hi', 'china'], 0, 2); var_dump($res2);
以上代码输出如下:
array (size=2) 0 => string 'hi' (length=2) 1 => string 'china' (length=5) E:\apps\wamp\www\demo\test\index.php:10:array (size=2) 0 => string 'hillo' (length=5) 1 => string 'chinarld' (length=8)