i (PCRE_CASELESS)
如果設定了這個修飾符, 模式中的字母會進行大小寫不敏感配對.
m (PCRE_MULTILINE)
預設情況下, PCRE認為目標字串是由單行字元組成的(然而實際上它可能會包含多行), "行首"元字元(^)只符合字串的開始位置#, 而"#"元字元($)只符合字串結尾, 或最後的換行符號(#除非設定了D修飾符). 這個行為和perl相同 . 當這個修飾符設定之後, "行首"與"行結尾"就會在目標字串中符合任意換行符之前或之後, 另外#, 也分別符合目標字串的最開始和最末端位置. 這等於perl的/m修飾符. 如果目標字串 #中沒有"\n"#字元 , 或模式中沒有出現^或$, ##設定這個修飾符不產生任何影響.
s# (PCRE_DOTALL)
如果設定了這個修飾符, 模式中的點號元字元符合所有字元, 包含換行符. 如果沒有這個 #修飾符, 點號不符合換行符. 這個修飾符等同於perl中的/s#修飾符.一個取反字元類別例如 [^a]總是符合換行符號, 而不依賴這個修飾符的設定.
#x (PCRE_EXTENDED)
如果設定了這個修飾符, 模式中的沒有經過轉義的或不在字元類中的空白資料字元總是會被忽略, 並且位於一個未轉義的字元類別外部的#字元和下一個換行符號之間的字元也被忽略. 這個修飾符# #等同於perl中的/x修飾符, 讓被編譯模式中可以包含註解#. 注意: 這只用於資料字元. 空白字元 還是不能在模式的特殊字元序列中出現, 例如序列#(?(引入了一個條件子群組(翻譯: 這種語法定義的 特殊字元序列中如果出現空白字元會導致編譯錯誤. 例如( ?(就會導致錯誤.).
e (PREG_REPLACE_EVAL)
##如果這個修飾符設定了, preg_replace()在進行了對替換字串的 後向引用替換之後, 將替換後的字串當作php#程式碼評估執行(eval函數方式), 並使用執行結果 作為實際參與替換的字串. #單引號, 雙引號, 反斜線(\)和NULL字元在#後向引用替換時會被反斜線轉義#.
Tip
#請確保 #replacement參數由合法php程式碼字串組成, ##否則php將會 #在#preg_replace()在呼叫的行上 產生一個解釋錯誤. Note: 只 preg_replace() #使用此修飾符, 其他PCRE函數忽略此修飾符. A (PCRE_ANCHORED) 如果設定了這個修飾符, 模式被強制為"錨定"模式, 也就是說約束匹配使其只從 目標字串的開始位置搜尋. 這個效果同樣可以用適當的模式建構出來,並且 這也是perl種實作這種模式的唯一途徑. D (PCRE_DOLLAR_ENDONLY) 如果這個修飾符被設定, 模式中的元字元美元符號只是符合目標字串的結尾. 如果這個修飾符 沒有設定, 當字串以換行符號結尾, 美元符號也會符合該換行符號(但不會符合先前的任何換行符號). 如果設定了修飾符m, #這個修飾符被忽略. 在perl中沒有與此修飾符等同的修飾符. S 當一個模式需要多次使用的時候, 為了得到匹配速度的提升, 值得花一些時間 #對其進行一些額外的分析. 如果設定了這個修飾符, 這個額外的分析就會執行#. 目前#, #這種對一個模式的分析僅僅適用於非錨定模式的匹配(即沒有單獨的固定開始字元). #U (PCRE_UNGREEDY) 這個修飾符逆轉了量詞的"貪婪#"模式. 使量詞預設為非貪婪的, 透過量詞後緊跟著?##的方式可以使其成為貪婪的. 這和perl是不相容的##. 它同樣可以使用 模式內修飾符設定( )來設定, (例如.*?##).Note#: 在非貪婪模式, 通常無法符合超過 pcre.backtrack_limit 這個修飾符打開了PCRE與perl不相容的附件功能. 模式中的任意反斜線後就ingen一個 沒有特殊意義的字元都會導致一個錯誤, 以此保留這些字元以確保向後相容性. 預設## #情況下, 在perl#中, 反斜線緊接在一個沒有特殊意義的字元被認為是該字元的原文. 目前沒有其他特性由這個修飾符控制. J (PCRE_INFO_JCHANGED) 內部選項設定(?J)修改本地的PCRE_DUPNAMES選項. ##允許子組重名.
(譯註:只能透過內部選項設定, 外的/J設定會產生錯誤.) #u (PCRE8)# 此修正符開啟一個與perl不相容的附加功能. 模式字串被視為utf-8的. 這個修飾符 從 unix版php
4.1.0或更高, win32版本php 4.2.3開始可用 #.
php 4.3.5開始檢視模式的utf-8合法性. This modifier turns on additional
functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 valternity of since sined the yed PHP 4.3.5.
以上是PHP正規表示式 /i, /s, /x,/u, /U, /A, /D, /S等介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!