strtr(string, from, to):
逐個字符開始替換,以from跟to中長度較較短的一個為准,例如:
strtr("aidengni","ai","b") 只替換原始字符串中出現的a 輸出:bidengni
strtr("aidengni","a","bu") 只替換原始字符串中出現的a 輸出:bidengni
此函數是大小寫敏感的,具如果發生多次替換,每一次替換的藍本都是最原始的那個字符串,而不是在前一次替換的基礎上替換,如
strtr("aidengni","aA","A@") 會輸出Aidenliu 而不是@idengni
strtr(string, array):
array為關聯數組,用關聯數組中的值替換原始字符串中出現的對應的鍵,若發生多次替換,每次替換的對像都是最原始的那個字符串,而不是在前一次替換的基礎上替換(此點與str_replace不同)
strtr(string, from, to)與 strtr(string, array)之間的區別:
- strtr(string, from, to)是逐個字符替換,而strtr(string, array)是字符串替換
- strtr("aidengni","ai","") 不發生替換(第二個參數為零長度字符串)
- strtr("aidengni",array("ai"=>"")) 發生替換
實例說明:
#EXAMPLE1
<?php echo strtr("I Love You", "Lo", "LO");
輸出結果:
I LOve YOu
說明:
- strtr()區分大小寫
- 字符進行逐個替換
- strtr的替換是很特殊的,你注意看后面那個YOu,中間的O被替換的,這顯然不是我們的本意。
#EXAMPLE2
<?php echo strtr("I Love You", "Lo", "")."<br>"; echo strtr("I Love You", "o"," ");
輸出結果:
I Love You
I L ve Y u
說明:
- to參數為空或空字符串的時候什么也不會發生改變
- to參數可以為空白字符
#EXAMPLE3
<?php echo str("aidengni,I Love You", array('ai'=>'bu', 'Love'=>'like'));
輸出結果:
budengni,I like You
說明
- 實現的是字符串替換
- 字符串中的字符按關聯數組中鍵名替換成鍵值
#EXAMPLE4 更替字符串技巧
$str_change = array("ai"=>"bu"); $str_change += array("I"=>"Me"); $str_change += array("You"=>"You Too"); echo strtr("aidengni,I Love You", $str_change);
輸出結果:
budengni,Me Love You Too
說明:
需要替換什么就往數組里添加對應的鍵值對
#***#
- strtr(string, from, to) 適用於通篇字符替換
- strtr(string, array) 適用於指定字符串替換
- strtr() 不建議以少換多的替換
- strtr() 的運行速度比str_replace()快3~4倍
str_replace(find,replace,string,count)
以其他字符替換字符串中的一些字符(區分大小寫)
該函數必須遵循下列規則:
- 如果搜索的字符串是數組,那么它將返回數組。
- 如果搜索的字符串是數組,那么它將對數組中的每個元素進行查找和替換。
- 如果同時需要對數組進行查找和替換,並且需要執行替換的元素少於查找到的元素的數量,那么多余元素將用空字符串進行替換
- 如果查找的是數組,而替換的是字符串,那么替代字符串將對所有查找到的值起作用。
注釋:該函數區分大小寫。請使用 str_ireplace() 函數執行不區分大小寫的搜索。
參數 | 描述 |
---|---|
find | 必需。規定要查找的值。 |
replace | 必需。規定替換 find 中的值的值。 |
string | 必需。規定被搜索的字符串。 |
count | 可選。對替換數進行計數的變量。 |
實例:
#EXAMPLE1
帶count 統計參數
<?php $str_rp = "aidengni,I Love You"; echo str_replace("ai", "bu",$str_rp,$i); echo '<br>'.$i;
輸出結果:
budengni,I Love You
1
#EXAMPLE2
需要執行替換的元素少於查找到的元素的數量
<?php $str_rp_array = array('I', 'Love', 'You'); print_r(str_replace(array('I', 'You'), array('Me'), $str_rp_array));
輸入結果:
Array ( [0] => Me [1] => Love [2] => )
說明:
多余元素被空字符串進行替換,"You " 被 空字符串替換了
#***#
- strtr(string, array())常用於替換字符串
- str_replace(find, replace, string ,count) 常用語替換數組元素和統計替換的次數
substr_replace(string, replacement, start, length)
把字符串的一部分替換為另一個字符串
如果 start 參數是負數且 length 小於或者等於 start,則 length 為 0
參數 | 描述 |
---|---|
string | 必需。規定要檢查的字符串。 |
replacement | 必需。規定要插入的字符串。 |
start | 必需。規定在字符串的何處開始替換。
|
length | 可選。規定要替換多少個字符。默認是與字符串長度相同。
|
實例
#EXAMPLE1
<?php $str_rp = "aidengni,I Love You"; echo substr_replace($str_rp,'You Too',strpos($str_rp,'You'));
輸出結果:
aidengni,I Love You Too
說明:
-
strpos($str_rp,'You') 獲取 子字符串'You' 第一次出現的位置
#EXAMPLE2
插入字符串
<?php $str_rp = "aidengni,I Love You"; echo substr_replace($str_rp,'Don\'t ',-8, 0);
輸出結果:
aidengni,I Don't Love You
說明:
- start 參數為負數,表示從字符串的末尾向前讀取的位置
- length 參數為0 ,表示在指定位置插入字符串
#***#
- substr_replace() 通常用於字符串插入操作
- substr_replace() 常用於需要替換的字符串較長的情況
preg_replace(pattern
, replacement, subject,limit,count
)
正則替換,搜索 subject 中匹配 pattern 的部分, 以 replacement 進行替換。
參數說明:
-
pattern: 要搜索的模式,可以是字符串或一個字符串數組。
-
replacement: 用於替換的字符串或字符串數組。
-
subject: 要搜索替換的目標字符串或字符串數組。
-
limit: 可選,對於每個模式用於每個 subject 字符串的最大可替換次數。 默認是-1(無限制)。
-
count: 可選,為替換執行的次數。
返回值
如果 subject 是一個數組, preg_replace() 返回一個數組, 其他情況下返回一個字符串。
如果匹配被查找到,替換后的 subject 被返回,其他情況下 返回沒有改變的 subject。如果發生錯誤,返回 NULL。
#EXAMPLE
使用基於數組索引的搜索替換
$str_rp = "aidengni,I Love You"; //替換多個字符串 $pattern_array = array(); $pattern_array[0] = "/ai/"; $pattern_array[1] = "/You/"; $replacement_array = array(); $replacement_array[0] = "bu"; $replacement_array[1] = "You Too"; echo preg_replace($pattern_array, $replacement_array, $str_rp);
輸出結果
budengni,I Love You Too
#***#
執行效率問題
- strtr() 最快
- str_replace() 次之
- preg_replace() 最慢,一般很少用