php中的如何使用正則替換

2020-07-16 10:05:51

php中的正則替換使用

preg_replace 介紹

preg_replace — 執行一個正規表示式的搜尋和替換

preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed

搜尋subject中匹配pattern的部分, 以replacement進行替換。

preg_replace 引數

pattern

要搜尋的模式。可以使一個字串或字串陣列。

可以使用一些PCRE修飾符。

replacement

用於替換的字串或字串陣列。如果這個引數是一個字串,並且pattern 是一個陣列,那麼所有的模式都使用這個字串進行替換。如果pattern和replacement 都是陣列,每個pattern使用replacement中對應的 元素進行替換。如果replacement中的元素比pattern中的少, 多出來的pattern使用空字串進行替換。

replacement中可以包含後向參照n 或$n,語法上首選後者。 每個 這樣的參照將被匹配到的第n個捕獲子組捕獲到的文字替換。 n 可以是0-99,和$0代表完整的模式匹配文字。 捕獲子組的序號計數方式為:代表捕獲子組的左括號從左到右, 從1開始數。如果要在replacement 中使用反斜線,必須使用4個("",譯註:因為這首先是php的字串,經過跳脫後,是兩個,再經過 正規表示式引擎後才被認為是一個原文反斜線)。

當在替換模式下工作並且後向參照後面緊跟著需要是另外一個數位(比如:在一個匹配模式後緊接著增加一個原文數位), 不能使用1這樣的語法來描述後向參照。比如, 11將會使preg_replace() 不能理解你希望的是一個1後向參照緊跟一個原文1,還是 一個11後向參照後面不跟任何東西。 這種情況下解決方案是使用${1}1。 這建立了一個獨立的$1後向參照, 一個獨立的原文1。

當使用被棄用的 e 修飾符時, 這個函數會跳脫一些字元(即:'、"、 和 NULL) 然後進行後向參照替換。當這些完成後請確保後向參照解析完後沒有單引號或 雙引號引起的語法錯誤(比如: 'strlen('$1')+strlen("$2")')。確保符合PHP的 字串語法,並且符合eval語法。因為在完成替換後, 引擎會將結果字串作為php程式碼使用eval方式進行評估並將返回值作為最終參與替換的字串。

subject

要進行搜尋和替換的字串或字串陣列。

如果subject是一個陣列,搜尋和替換回在subject 的每一個元素上進行, 並且返回值也會是一個陣列。

limit

每個模式在每個subject上進行替換的最大次數。預設是 -1(無限)。

count

如果指定,將會被填充為完成的替換次數。

preg_replace 返回值

如果subject是一個陣列, preg_replace()返回一個陣列, 其他情況下返回一個字串。

如果匹配被查詢到,替換後的subject被返回,其他情況下 返回沒有改變的 subject。如果發生錯誤,返回 NULL 。

以上就是php中的如何使用正則替換的詳細內容,更多請關注TW511.COM其它相關文章!