str_replace()、preg_replace()、strtr()三者的區別和用法
php中在字串的替換模組有3個函式,str_replace(),preg_replace(),以及strtr()。在程式設計過程中,這三個函式的執行效率有所不同,str_replace()函式比preg_replace()函式執行效率快,而strtr()函式的執行效率又高於str_replace(),所以在變成中建議使用strtr()函式。
str_replace():
定義和用法
str_replace() 函式以其他字元替換字串中的一些字元(區分大小寫)。
該函式必須遵循下列規則:
- 如果搜尋的字串是陣列,那麼它將返回陣列。
- 如果搜尋的字串是陣列,那麼它將對陣列中的每個元素進行查詢和替換。
- 如果同時需要對陣列進行查詢和替換,並且需要執行替換的元素少於查詢到的元素的數量,那麼多餘元素將用空字串進行替換
- 如果查詢的是陣列,而替換的是字串,那麼替代字串將對所有查詢到的值起作用。
註釋:該函式區分大小寫。請使用 str_ireplace() 函式執行不區分大小寫的搜尋。
註釋:該函式是二進位制安全的。、
語法
str_replace(find,replace,string,count)
引數 | 描述 |
---|---|
find | 必需。規定要查詢的值。 |
replace | 必需。規定替換 find 中的值的值。 |
string | 必需。規定被搜尋的字串。 |
count | 可選。對替換數進行計數的變數。 |
例項
把字串 "Hello world!" 中的字元 "world" 替換為 "PHP":
<?php $str = str_replace("world","PHP","Hello world!");
echo $str; ?>
程式碼執行結果:Hello PHP!
preg_replace():
preg_replace ()用於執行一個正則表示式的搜尋和替換,一般很少使用。
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
說明:搜尋subject中匹配pattern的部分, 以replacement進行替換。
preg_replace引數補充說明:1、replacement 可以包含 \\n 形式或 $n 形式的逆向引用,首選使用後者。每個此種引用將被替換為與第 n 個被捕獲的括號內的子模式所匹配的文字。n 可以從 0 到 99,其中 \\0 或 $0 指的是被整個模式所匹配的文字。對左圓括號從左到右計數(從 1 開始)以取得子模式的數目。
2、對替換模式在一個逆向引用後面緊接著一個數字時(如 \\11),不能使用 \\ 符號來表示逆向引用。因為這樣將會使 preg_replace() 搞不清楚是想要一個 \\1 的逆向引用後面跟著一個數字 1 還是一個 \\11 的逆向引用。解決方法是使用 \${1}1。這會形成一個隔離的 $1 逆向引用,而使另一個 1 只是單純的文字。
3、上述引數除 limit 外都可以是一個數組。如果 pattern 和 replacement 都是陣列,將以其鍵名在陣列中出現的順序來進行處理,這不一定和索引的數字順序相同。如果使用索引來標識哪個 pattern 將被哪個 replacement 來替換,應該在呼叫 preg_replace() 之前用 ksort() 函式對陣列進行排序。
下面列舉一些preg_replace的例子:echo preg_replace("/[0-9]/","",$str);//去掉所有數字
echo preg_replace("/[a-z]/","",$str); //這樣是去掉所有小寫字母
echo preg_replace("/[A-Z]/","",$str); //這樣是去掉所有大寫字母
echo preg_replace("/[a-z,A-Z]/","",$str); //這樣是去掉所有字母
注:開頭結尾出現斜槓(/),是告訴解析器雙斜槓裡面的內容即為正則表示式,也是宣告正則表示式的標誌,就像宣告PHP變數用$一樣。一對中括號([ ])裡的內容,即是要查詢替換的內容。
strtr():
定義和用法
strtr() 函式轉換字串中特定的字元。
註釋:如果 from 和 to 引數的長度不同,則會被格式化為最短的長度。
語法
strtr(string,from,to)
或者:
strtr(string,array)
引數 | 描述 |
---|---|
string | 必需。規定要轉換的字串。 |
from | 必需(除非使用陣列)。規定要改變的字元。 |
to | 必需(除非使用陣列)。規定要改變為的字元。 |
array | 必需(除非使用 from 和 to)。陣列,其中的鍵名是更改的原始字元,鍵值是更改的目標字元。 |
詳解
strtr(string,from,to):
逐個字元開始替換,以from跟to中長度較較短的一個為準,例如:
strtr("aidenliu","ai","b") 只替換原始字串中出現的a 輸出:bidenliu
strtr("aidenliu","a","bc") 只替換原始字串中出現的a 輸出:bidenliu
此函式是大小寫敏感的,具如果發生多次替換,每一次替換的藍本都是最原始的那個字串,而不是在前一次替換的基礎上替換,如
strtr("aidenliu","aA","[email protected]") 會輸出Aidenliu 而不是@idenliu,也不是[email protected]
strtr(string,array):
array 為關聯陣列,用關聯陣列中的值替換原始字串中出現的對應的鍵,如果發生多次替換,每次替換的對像都是最原始的那個字串,而不是在一次替換的基礎上替換(此點與str_replace不同)
strtr(string,from,to)與 strtr(string,array):
strtr(string,from,to)是逐個字元替換,而strtr(string,array)是字串替換
strtr("aidenliu","ai","") 不發生替換(第二個引數為零長度字串)
strtr("aidenliu",array("ai"=>"")) 發生替換
執行例項
把字串 "Hello world" 替換成 "Hi earth":
<?php $arr = array("Hello" => "Hi", "world" => "earth"); echo strtr("Hello world",$arr); ?>
執行結果:Hi earth
相關推薦
str_replace()、preg_replace()、strtr()三者的區別和用法
php中在字串的替換模組有3個函式,str_replace(),preg_replace(),以及strtr()。在程式設計過程中,這三個函式的執行效率有所不同,str_replace()函式比preg_replace()函式執行效率快,而strtr()函式的執行效率又高
Python: read()、readline()和readlines()三者間的區別和用法
區別1:read()、readline()都是輸出字串 readlines輸出的是列表 區別2: read()按輸入引數size=a來讀取從起始位置到a的所有字元,作為字串儲存在x裡面 readline()則是死板的按行讀取 readlines
Python中read()、readline()和readlines()三者間的區別和用法
前言 眾所周知在python中讀取檔案常用的三種方法:read(),readline(),readlines(),今天看專案是又忘記他們的區別了。以前看書的時候覺得這東西很簡單,一眼掃過,待到用時卻也只知道有這麼幾個方法,不懂得它的原理與用法。也許吧,沒有永遠的記憶,況且根
淺談MVC、MVP、MVVM架構模式的區別和聯系
.html csdn 獲取 視圖 viewmodel url title tle htm 淺談MVC、MVP、MVVM架構模式的區別和聯系 學習了:http://www.cnblogs.com/guwei4037/p/5591183.html http://blog.csd
功能架構圖、信息結構圖、產品結構圖的區別和繪制方法
功能結構 信息結構 產品結構 互聯網產品 一、功能架構圖 1. 定義 功能結構圖就是以功能模塊為類別,介紹模塊下其各功能組成的圖表,體現了產品功能的同時,也展示了功能的從屬關系。 2. 作用: 產品設計時,輔助思路梳理,避免功能概念模糊、缺失。 3. 註意點: 繪制功能結構時,盡量避免出現信息
訊息協議(MQTT、AMQP、XMPP、WAMP、STOMP)之間的區別和應用
這篇文章會簡單扼要的解釋 MQTT,XMPP,STOMP,AMQP,WAMP 等。我們先來根據它們各自的目的進行分類: 1、純訊息 底層協議(例如 TCP)是被設計用來將一個訊息從一個傳送者(sender)傳遞給一個接收者(receiver)。他們並不關係訊息
SQL中INNER、LEFT、RIGHT JOIN的區別和用法詳解
相信很多人在剛開始使用資料庫的INNER JOIN、LEFT JOIN和RIGHT JOIN時,都不太能明確區分和正確使用這三種JOIN操作,本文通過一個簡單的例子通俗易懂的講解這三者的區別,希望對大家能帶來幫助。 首先,我們建立示例資料庫和表。同時也要明確一個概念:A INN
複用-組合、繼承、代理區別和用法
繼承主要有兩個作用: 1.為匯出類提供方法,這個特性在程式碼複用有比較多的應用 2.表現匯出類與基類之間的關係。這個特性在多型裡非常有用,後面會講到。 我們先來講為匯出類提供方法這個特性——繼承是程式碼複用中重要的一種方式,很難把它與複用割裂開看,而且放在一起比較似乎更容易理解繼承在為匯出類
String、StringBuilder和StringBuffer的區別和用法
分別使用使用這三種來拼接字串,對比各自損耗的時間: 經過測試: package com.test; public class Main{ public static void main(String[] args){ testString(); testStrin
Position屬性四個值:static、fixed、absolute和relative的區別和用法 Position屬性四個值:static、fixed、absolute和relative的區別和用法
Position屬性四個值:static、fixed、absolute和relative的區別和用法 在用CSS+DIV進行佈局的時候,一直對position的四個屬性值relative,absolute,static,fixed分的不是很清楚,以致經常會出現讓人很鬱悶的結果。今天研究了一下,總算有所瞭解。
localStorage、sessionStorage的區別和用法
webstorage webstorage是本地儲存,儲存在客戶端,包括localStorage和sessionStorage。 localStorage localStorage生命週期是永久,這意味著除非使用者顯示在瀏覽器提供的UI上清除loca
Position屬性四個值:static、fixed、absolute和relative的區別和用法
靜下心來慢慢讀,讀完一定會有所收穫的 static(靜態定位):預設值。沒有定位,元素出現在正常的流中(忽略 top, bottom, left, right 或者 z-index 宣告)。 relative(相對定位):生成相對定位的元素,通過top,bottom,left,right的設定相對於其正常
Java中final、finally、finalize的區別和用法
1.簡單區別 final用於宣告屬性,方法和類,分別表示屬性不可交變,方法不可覆蓋,類不可繼承。 finally是異常處理語句結構的一部分,表示總是執行。 finalize是Object類的一個方法,在垃圾收集器執行的時候會呼叫被回收物件的此方法,供垃圾收集時的其他資源回收,例
_countof、sizeof、strlen的區別和用法
1 countof:是系統定義的一個巨集,求取元素的陣列的元素個數 2 sizeof:運算子,在標頭檔案中typedef為unsigned int,其值在編譯時即計算好了,獲得保證能容納實現所建立的最大物件的位元組大小 3 strlen:是一個函式,在執行時執行
where、having之間的區別和用法
出處https://blog.csdn.net/JDJH1024/article/details/76647866 聚合函式是比較where、having 的關鍵。 開門見山。where、聚合函式、having 在from後面的執行順序: where>聚
代理、nsnotification和kvo的區別和用法
個人在網上瀏覽一些文件發現蠻有意思的,現轉載下來供大家學習檢視。 1.效率肯定是delegate比nsnotification高。 2. delegate方法比notification更加直接。 最典型的特徵是,delegate方法往往需要關注返回值
ORACLE中的function 、packages、package bodies、procedure的有什麼區別和相同的地方?
Oracle中function和procedure的區別? 1).可以理解函式是儲存過程的一種 2).函式可以沒有引數,但是一定需要一個返回值,儲存過程可以沒有引數,不需要返回值 3).函式return返回值沒有返回引數模式,儲存過程通過out引數返回值, 如果需要
where、having之間的區別和用法(轉)
聚合函式是比較where、having 的關鍵。 開門見山。where、聚合函式、having 在from後面的執行順序: where>聚合函式(sum,min,max,avg,count)>having 列出group by來比較二者。()因
Java面試——String、StringBuider以及StringBuffer的區別和使用場景
1. 為什麼我們需要StringBuffer類和StringBuilder類String是不可變的物件,因此在每次對String型別進行改變的時候,都會生成一個新的String物件,然後將指標指向新的
JSESSIONID、cookie與SESSION的區別和聯絡 同名JSESSIONID處理
在一些投票之類的場合,我們往往因為公平的原則要求每人只能投一票,在一些WEB開發中也有類似的情況,這時候我們通常會使用COOKIE來實現,例如如下的程式碼: < % cookie[]cookies = request.getCookies(); if (cookies