這篇文章主要介紹了關於PHP中preg_replace() 正規替換所有符合條件的字串的方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
# PHP preg_replace() 正規替換,與Javascript 正規替換不同,PHP preg_replace() 預設就是替換所有符號匹配條件的元素
需要我們用程式處理的資料並不總是預先以資料庫思維設計的,或者說是無法用資料庫的結構去儲存的。
例如模版引擎解析模版、垃圾敏感資訊過濾等等。
一般這種情況,我們用正則按我們的規則去匹配preg_match、替換preg_replace。
但一般的應用中,無非是些資料庫CRUD,正規擺弄的機會很少。
根據前面說的,兩個場景:統計分析,用匹配;處理用替換。
PHP preg_replace() 正規替換,與Javascript 正規替換不同,PHP preg_replace() 預設就是替換所有符號匹配條件的元素。
preg_replace (正则表达式, 替换成, 字符串, 最大替换次数【默认-1,无数次】, 替换次数)
大部分語言的正規表示式都是差不多的,不過也有細微的差異。
PHP 正規表示式
正規字元 | 正規解釋 |
---|---|
#\ | 將下一個字元標記為特殊字符、或一個原義字元、或一個向後引用、或一個八進位轉義符。例如,“\n”匹配字元“n”。 “\\n”符合一個換行符號。序列“\\”符合“\”而“\(”則符合“(”。 |
#^ | 符合輸入字串的開始位置。如果設定了RegExp物件的Multiline屬性,^也符合「\n」或「\r」之後的位置。 |
$ | ##符合輸入字串的結束位置。如果設定了RegExp物件的Multiline屬性,$也符合「\n」或「\r」之前的位置。|
匹配前面的子表達式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等價於{0,}。 | |
匹配前面的子表達式一次或多次。例如,“zo ”能匹配“zo”以及“zoo”,但不能匹配“z”。 等價於{1,}。 | |
符合前面的子表達式零次或一次。例如,「do(es)?」可以符合「does」或「does」中的「do」。?等價於{0,1} 。 | |
n是一個非負整數。匹配確定的n次。例如,「o{2}」不能匹配「Bob」中的“o”,但是能匹配“food”中的兩個o。 | |
n是一個非負整數。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等價於“o ”。“o{0, }」則等價於「o*」。 | |
m和n均為非負整數,其中n | |
當這個字元緊跟在任何一個其他限制符(*, ,?,{n} ,{n,},{n,m})後面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符字串。例如,對於字串“oooo”,“o?”將匹配單一“o”,而“o ”將匹配所有“o”。 | |
匹配除“\n”之外的任何單個字符。要匹配包括“\n”在內的任何字符,請使用像“[\s\S]”的模式。 | |
符合pattern並取得此符合。所取得的符合可以從產生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中則使用$0…$9屬性。若要匹配圓括號字符,請使用“\(”或“\)”。 | |
匹配pattern但不取得匹配結果,也就是說這是一個非獲取匹配,不進行儲存以供以後使用。這在使用或字元“(|)”來組合一個模式的各個部分是很有用。例如「industr(?:y|ies)」就是比「industry|industries」更簡略的表達式。 | |
正向肯定預查,在任何符合pattern的字串開始處符合尋找字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如,“Windows(?=95|98|NT|2000)”能符合“Windows2000”中的“Windows”,但不能符合“Windows3.1”中的“Windows”。預查不消耗字符,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字符之後開始。 | |
正向否定預查,在任何不符合pattern的字串開始處符合查找字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如“Windows(?!95|98|NT|2000)”能符合“Windows3.1”中的“Windows”,但不能符合“Windows2000”中的“Windows”。 | 反向肯定預查,與正向肯定預查類似,只是方向相反。例如,“(? | (? | 反向否定預查,與正向否定預查類似,只是方向相反。例如“(? | x|y |
符合x或y。例如,「z|food」能匹配「z」或「food」。 「(z|f)ood」則符合「zood」或「food」。 | |
字元集合。匹配所包含的任意一個字元。例如,“[abc]”可以匹配“plain”中的“a”。 | |
[^xyz] | 負值字元集合。匹配未包含的任意字元。例如,「[^abc]」可以符合「plain」中的「plin」。 |
[a-z] | 字元範圍。符合指定範圍內的任意字元。例如,「[a-z]」可以符合「a」到「z」範圍內的任意小寫字母字元。注意:只有連字符在字符組內部時,並且出兩個字符之間時,才能表示字符的範圍; 如果出字符組的開頭,則只能表示連字符本身. |
負值字元範圍。匹配任何不在指定範圍內的任意字元。例如,「[^a-z]」可以符合任何不在「a」到「z」範圍內的任意字元。 | |
符合一個單字邊界,也就是指單字和空格間的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。 | |
符合非單字邊界。 “er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。 | |
符合由x指明的控製字元。例如,\cM符合一個Control-M或回車符。 x的值必須為A-Z或a-z之一。否則,將c視為一個原義的「c」字元。 | |
符合一個數字字元。等價於[0-9]。 | |
符合一個非數字字元。等價於[^0-9]。 | |
符合一個換頁符號。等價於\x0c和\cL。 | |
符合一個換行符號。等價於\x0a和\cJ。 | |
符合一個回車符。等價於\x0d和\cM。 | |
符合任何空白字符,包括空格、製表符、換頁符等等。等價於[ \f\n\r\t\v]。 | |
符合任何非空白字元。等價於[^ \f\n\r\t\v]。 | |
符合一個製表符。等價於\x09和\cI。 | |
符合一個垂直製表符。等價於\x0b和\cK。 | |
符合包括下劃線的任何單字字元。等價於「[A-Za-z0-9_]」。 | |
符合任何非單字字元。等價於「[^A-Za-z0-9_]」。 | |
符合n,其中n為十六進位轉義值。十六進制轉義值必須為確定的兩個數字長。例如,“\x41”匹配“A”。 「\x041」則等價於「\x04&1」。正規表示式中可以使用ASCII編碼。 | |
符合num,其中num是正整數。對所獲取的匹配的引用。例如,「(.)\1」會符合兩個連續的相同字元。 | |
標識一個八進位轉義值或一個向後引用。如果\n之前至少n個取得的子表達式,則n為向後引用。否則,如果n為八進制數字(0-7),則n為一個八進制轉義值。 | |
標識一個八進位轉義值或一個向後引用。如果\nm之前至少有nm個得到子表達式,則nm為向後引用。如果\nm之前至少有n個獲取,則n為一個後面接文字m的向後引用。如果前面的條件都不滿足,若n和m均為八進位數字(0-7),則\nm將符合八進位轉義值nm。 | |
如果n為八進位數字(0-7),且m和l均為八進位數字(0-7),則符合八進位轉義值nml。 | |
符合n,其中n是一個用四個十六進位數字表示的Unicode字元。例如,\u00A9符合版權符號(©)。 |
以上是關於PHP中preg_replace() 正規替換所有符合條件的字串的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

負載均衡會影響會話管理,但可以通過會話複製、會話粘性和集中式會話存儲解決。 1.會話複製在服務器間複製會話數據。 2.會話粘性將用戶請求定向到同一服務器。 3.集中式會話存儲使用獨立服務器如Redis存儲會話數據,確保數據共享。

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

PHP會話的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。 1.Cookies通過在客戶端存儲數據來管理會話,簡單但安全性低。 2.Token-basedAuthentication使用令牌驗證用戶,安全性高但需額外邏輯。 3.Database-basedSessions將數據存儲在數據庫中,擴展性好但可能影響性能。 4.Redis/Memcached使用分佈式緩存提高性能和擴展性,但需額外配

Sessionhijacking是指攻擊者通過獲取用戶的sessionID來冒充用戶。防範方法包括:1)使用HTTPS加密通信;2)驗證sessionID的來源;3)使用安全的sessionID生成算法;4)定期更新sessionID。

本文比較了PHP和ASP.NET,重點是它們對大規模Web應用程序,性能差異和安全功能的適用性。兩者對於大型項目都是可行的,但是PHP是開源和無關的,而ASP.NET,


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3漢化版
中文版,非常好用

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具