# substr_replace

(PHP 4, PHP 5, PHP 7)

substr_replace — 替换字符串的子串

### 说明

substr_replace ( mixed `$string` , mixed `$replacement` , mixed `$start` [, mixed `$length` ] ) : mixed

substr_replace() 在字符串 `string` 的副本中将由 `start` 和可选的 `length` 参数限定的子字符串使用 `replacement` 进行替换。

### 参数

`string`

  输入字符串。

  An array of strings can be provided, in which case the replacements will occur on each string in turn. In this case, the `replacement`, `start` and `length` parameters may be provided either as scalar values to be applied to each input string in turn, or as arrays, in which case the corresponding array element will be used for each input string.

`replacement`

  替换字符串。

`start`

  如果 `start` 为正数，替换将从 `string` 的 `start` 位置开始。

  如果 `start` 为负数，替换将从 `string` 的倒数第 `start` 个位置开始。

`length`

  如果设定了这个参数并且为正数，表示 `string` 中被替换的子字符串的长度。如果设定为负数，它表示待替换的子字符串结尾处距离 `string` 末端的字符个数。如果没有提供此参数，那么它默认为 strlen( `string` ) （字符串的长度）。当然，如果 `length` 为 0，那么这个函数的功能为将 `replacement` 插入到 `string` 的 `start` 位置处。

### 返回值

返回结果字符串。如果 `string` 是个数组，那么也将返回一个数组。

### 更新日志

版本 | 说明
--- | ---
4.3.3 | All parameters now accept arrays.

### 范例

Example #1 substr_replace() 范例

    <?php
    $var = 'ABCDEFGH:/MNRPQR/';
    echo "Original: $var<hr />\n";

    /* 这两个例子使用 “bob” 替换整个 $var。*/
    echo substr_replace($var, 'bob', 0) . "<br />\n";
    echo substr_replace($var, 'bob', 0, strlen($var)) . "<br />\n";

    /* 将 “bob” 插入到 $var 的开头处。*/
    echo substr_replace($var, 'bob', 0, 0) . "<br />\n";

    /* 下面两个例子使用 “bob” 替换 $var 中的 “MNRPQR”。*/
    echo substr_replace($var, 'bob', 10, -1) . "<br />\n";
    echo substr_replace($var, 'bob', -7, -1) . "<br />\n";

    /* 从 $var 中删除 “MNRPQR”。*/
    echo substr_replace($var, '', 10, -1) . "<br />\n";
    ?>

Example #2 Using substr_replace() to replace multiple strings at once

    <?php
    $input = array('A: XXX', 'B: XXX', 'C: XXX');

    // A simple case: replace XXX in each string with YYY.
    echo implode('; ', substr_replace($input, 'YYY', 3, 3))."\n";

    // A more complicated case where each replacement is different.
    $replace = array('AAA', 'BBB', 'CCC');
    echo implode('; ', substr_replace($input, $replace, 3, 3))."\n";

    // Replace a different number of characters each time.
    $length = array(1, 2, 3);
    echo implode('; ', substr_replace($input, $replace, 3, $length))."\n";
    ?>

以上例程会输出：

    A: YYY; B: YYY; C: YYY
    A: AAA; B: BBB; C: CCC
    A: AAAXX; B: BBBX; C: CCC

### 注释

> Note: 此函数可安全用于二进制对象。

### 参见

- str_replace() - 子字符串替换
- substr() - 返回字符串的子串
- 字符串访问与修改