PHP 字符串函数

PHP substr_replace函数用于从字符串的指定位置开始替换成指定的另一个字符串,它用于字符串的替换。 

它也可以替换字符串数组,字符串数组中的每个元素也是从指定位置开始替换成指定的另一个字符串(参见示例 5)。

语法

substr_replace() 的语法是下面给出,它接受四个参数。

substr_replace( $string, $replacement, $start, $length)

参数

参数说明必须/可选
string    要替换的原始字符串必须
replacement
要替换成的字符串必须

start

它指定了替换的开始位置。此参数为整数值。该参数有3个条件:
  • 如果$start传入的值为正数,则替换从字符串中的指定位置开始。
  • 如果$start为负值,则替换从字符串end的指定位置开始。
  • 如果$start是0,那么替换将从字符串的第一个字符开始。
必须

length

它指定要在字符串中替换多少个字符。如果 $length 参数未在 substr_replace() 中传递,则替换$start后面的所有字符串。这个参数还有三个条件:
  • 如果$length值为正,那么给定长度的字符串会被新字符串替换。
  • 如果$length 为负数,则替换字符串后的字符数应留在末尾。
  • 如果 $length 为 0,是插入而不是替换。
可选

返回值

substr_raplace() 在替换完成后返回一个字符串。如果字符串是数组,则返回数组。

注意

substr_replace() 是一个二进制安全函数。

PHP 4+版本支持此功能。

更新日志

从 PHP 4.3.3 开始,所有参数都接受数组。

示例

以下给出几个示例,我们可以从中学习substr_replace()函数的具体用法。

示例1

<?php
$replace = substr_replace("Hello earth", "yxjc123", 6);
echo $replace;
?>

输出:

Hello yxjc123
在上面的例子中,替换从第 6 个位置开始。 "earch"替换为"yxjc123"。

示例2

<?php
//从字符串前面替换
$replace1 = substr_replace("Hello yxjc123", "PHP", 6);
echo $replace1."<br>";
//从字符串末尾替换
$replace2 = substr_replace("Hello yxjc123", "PHP", -8);
echo $replace2;
?>

输出:

Hello PHP
HelloPHP
在上面的例子中,在第一种情况下,替换从第 6 位开始。在第二种情况下,传递了一个负值,因此从字符串中的第 10 个位置开始进行替换。

示例3

<?php
$replace = substr_replace("PHP!","Hello " , 0, 0);
echo $replace;
?>

输出:

Hello PHP!
在上面的示例中,我们使用了第四个 $length 参数,其值被传递为 0。因此字符串"Hello"是插入成而不是替换。

示例4

<?php
$replace = substr_replace("Welcome yxjc123","to " , 8, 0);
echo $replace;
?>

输出:

Welcome to yxjc123

示例5

一次替换多个字符串,字符串数组的例子。

<?php
$input_str =  array('X: AAAA', 'Y: AAAA', 'Z: AAAA');

//每个 AAA 都替换为字符串 BBB。
echo implode('; ', substr_replace($input_str, 'BBBB',3,4)). '</br>';

$replace = array('XXXX', 'YYYY', 'ZZZZ');
//每个 AAA 被替换为不同的值。
echo implode('; ', substr_replace($input_str, $replace,3,4)). '</br>';

//每次替换不同数量的字符
$length = 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()函数将数组转为字符串。