(PHP 4, PHP 5)
str_replace — 子字符串替换
说明
mixed str_replace ( mixed$search
, mixed $replace
, mixed $subject
[, int &$count
] )
该函数返回一个字符串或者数组。该字符串或数组是将 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
如果被指定,它的值将被设置为替换发生的次数。
返回值
该函数返回替换后的数组或者字符串。
更新日志
版本
说明
5.0.0
新增 count
参数。
4.3.3
函数行为改变。旧的版本中存在一个 BUG —— 当 search
和
replace
两个参数都是数组的时候,将导致空的 search
索引被跳过,但是却没有同时前移 replace
内部指针。该错误发生在 PHP 4.3.3,任何依赖于此 BUG 的脚本应该先除去空的查找值,从而模拟原始的行为。
4.0.5
大多数参数都可以为数组。
范例
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 1nLine 2rLine 3rnLine 4n";
$order = array("rn", "n", "r");
$replace = '<br />';
// 首先替换 rn 字符,因此它们不会被两次转换
$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() - 转换指定字符