str_replace

(PHP 4, PHP 5, PHP 7, PHP 8)

str_replace子字符串替換

說明

str_replace(
    mixed $search,
    mixed $replace,
    mixed $subject,
    int &$count = ?
): mixed

該函數(shù)返回一個字符串或者數(shù)組。該字符串或數(shù)組是將 subject 中全部的 search 都被 replace 替換之后的結(jié)果。

如果沒有一些特殊的替換需求(比如正則表達式),你應(yīng)該使用該函數(shù)替換 ereg_replace()preg_replace()

參數(shù)

如果 searchreplace 為數(shù)組,那么 str_replace() 將對 subject 做二者的映射替換。如果 replace 的值的個數(shù)少于 search 的個數(shù),多余的替換將使用空字符串來進行。如果 search 是一個數(shù)組而 replace 是一個字符串,那么 search 中每個元素的替換將始終使用這個字符串。該轉(zhuǎn)換不會改變大小寫。

如果 searchreplace 都是數(shù)組,它們的值將會被依次處理。

search

查找的目標(biāo)值,也就是 needle。一個數(shù)組可以指定多個目標(biāo)。

replace

search 的替換值。一個數(shù)組可以被用來指定多重替換。

subject

執(zhí)行替換的數(shù)組或者字符串。也就是 haystack。

如果 subject 是一個數(shù)組,替換操作將遍歷整個 subject,返回值也將是一個數(shù)組。

count

如果被指定,它的值將被設(shè)置為替換發(fā)生的次數(shù)。

返回值

該函數(shù)返回替換后的數(shù)組或者字符串。

范例

示例 #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;
?>

示例 #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 字符,因此它們不會被兩次轉(zhuǎ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;
?>

注釋

注意: 此函數(shù)可安全用于二進制對象。

警告

了解替換順序

由于 str_replace() 的替換時從左到右依次進行的,進行多重替換的時候可能會替換掉之前插入的值。參見該文檔的范例。

注意:

該函數(shù)區(qū)分大小寫。使用 str_ireplace() 可以進行不區(qū)分大小寫的替換。

參見