(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() - 轉換指定字符