strtr、str_replace()、substr_replace、preg_replace之間的區別


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

必需。規定在字符串的何處開始替換。

  • 正數 - 在字符串中的指定位置開始替換
  • 負數 - 在從字符串結尾的指定位置開始替換
  • 0 - 在字符串中的第一個字符處開始替換
length

可選。規定要替換多少個字符。默認是與字符串長度相同。

  • 正數 - 被替換的字符串長度
  • 負數 - 表示待替換的子字符串結尾處距離 string 末端的字符個數。
  • 0 - 插入而非替換

 

 

 

 

 

 

 

 

 

 

 

實例

#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() 最慢,一般很少用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM