# str_replace

(PHP 4, PHP 5, PHP 7)

str_replace — 子字符串替换

### 说明

str_replace ( mixed `$search` , mixed `$replace` , mixed `$subject` [, int `&$count` ] ) : mixed

该函数返回一个字符串或者数组。该字符串或数组是将 `subject` 中全部的 `search` 都被 `replace` 替换之后的结果。

如果没有一些特殊的替换需求（比如正则表达式），你应该使用该函数替换 ereg_replace() 和 preg_replace()。

### 参数

如果 `search` 和 `replace` 为数组，那么 str_replace() 将对 `subject` 做二者的映射替换。如果 `replace` 的值的个数少于 `search` 的个数，多余的替换将使用空字符串来进行。如果 `search` 是一个数组而 `replace` 是一个字符串，那么 `search` 中每个元素的替换将始终使用这个字符串。该转换不会改变大小写。

如果 `search` 和 `replace` 都是数组，它们的值将会被依次处理。

`search`

  查找的目标值，也就是 needle。一个数组可以指定多个目标。

`replace`

  `search` 的替换值。一个数组可以被用来指定多重替换。

`subject`

  执行替换的数组或者字符串。也就是 haystack。

  如果 `subject` 是一个数组，替换操作将遍历整个 `subject`，返回值也将是一个数组。

`count`

  如果被指定，它的值将被设置为替换发生的次数。

### 返回值

该函数返回替换后的数组或者字符串。

### 范例

Example #1 str_replace() 基本范例

    <?php
    // 赋值: <body text='black'>
    $bodytag = str_replace("%body%", "black", "<body text='%body%'>");

    // 赋值: Hll Wrld f PHP
    $vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
    $onlyconsonants = str_replace($vowels, "", "Hello World of PHP");

    // 赋值: You should eat pizza, beer, and ice cream every day
    $phrase  = "You should eat fruits, vegetables, and fiber every day.";
    $healthy = array("fruits", "vegetables", "fiber");
    $yummy   = array("pizza", "beer", "ice cream");

    $newphrase = str_replace($healthy, $yummy, $phrase);

    // 赋值: 2
    $str = str_replace("ll", "", "good golly miss molly!", $count);
    echo $count;
    ?>

Example #2 可能的 str_replace() 替换范例

    <?php
    // 替换顺序
    $str     = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
    $order   = array("\r\n", "\n", "\r");
    $replace = '<br />';

    // 首先替换 \r\n 字符，因此它们不会被两次转换
    $newstr = str_replace($order, $replace, $str);

    // 输出 F ，因为 A 被 B 替换，B 又被 C 替换，以此类推...
    // 由于从左到右依次替换，最终 E 被 F 替换
    $search  = array('A', 'B', 'C', 'D', 'E');
    $replace = array('B', 'C', 'D', 'E', 'F');
    $subject = 'A';
    echo str_replace($search, $replace, $subject);

    // 输出: apearpearle pear
    // 由于上面提到的原因
    $letters = array('a', 'p');
    $fruit   = array('apple', 'pear');
    $text    = 'a p';
    $output  = str_replace($letters, $fruit, $text);
    echo $output;
    ?>

### 注释

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

Caution

# 了解替换顺序

由于 str_replace() 的替换时从左到右依次进行的，进行多重替换的时候可能会替换掉之前插入的值。参见该文档的范例。

> Note:

> 该函数区分大小写。使用 str_ireplace() 可以进行不区分大小写的替换。

### 参见

- str_ireplace() - str_replace 的忽略大小写版本
- substr_replace() - 替换字符串的子串
- preg_replace() - 执行一个正则表达式的搜索和替换
- strtr() - 转换指定字符