首頁 >後端開發 >PHP問題 >php 正規特殊字元轉義的方法

php 正規特殊字元轉義的方法

藏色散人
藏色散人原創
2020-10-20 09:18:134617瀏覽

php正規特殊字元轉義的方法:先建立PHP範例檔案;然後定義字串;最後透過反斜線對特殊字元進行轉義,並對變數進行解析即可。

php 正規特殊字元轉義的方法

推薦:《PHP影片教學

問題

最近使用PHP正規表示式,書寫表達式字串的時候遇到了一些問題,不知道何時需要用反斜線“\”,現在進行一些梳理。

PHP字串

PHP字串的定義方法有4種:

  • #單引號
  • 雙引號
  • heredoc 語法結構
  • nowdoc 語法結構(自PHP 5.3.0以後)

在定義字串的時候,會對特殊字元進行轉義,對變數進行解析。

特殊字元包含:

##CR 或0x0D水平製表符\tHT 或0x09垂直製表符\vVT 或0x0B# 換頁\fFF 或0x0C#反斜線\\ 美元符號\$ 雙引號\" 單引號 ##\'\[0-7]{1,3}
專案 #內容 備註
換行 \n LF 或0x0A
#回車 \r
  #8進位字元
 # ###########16進位字元######\x[0-9A-Fa-f]{1,2}###### ####### #####

這部分詳見PHP Mannual ,這裡簡單記述一下:

單引號中,對單引號(')與反斜線(\)進行轉義,對其它字元原意輸出;

雙引號中,對除雙引號(\")的特殊字元進行轉義,對變數進行解析。

因此,在這兩種常見的字串定義中,對反斜槓(\)總是要轉義的。

PHP 正規表示式

PHP提供了兩套正規表示式函數庫:【參考】

一套是由PCRE(Perl Compatible Regular Expression)庫提供的。使用“preg_”為前綴命名的函數;
一套由POSIX(Portable Operating System Interface of Unix )擴展提供的(PHP預設)。使用以“ereg_”為前綴命名的函數;

正規表示式提供了匹配、替換、分割的功能。

目前只是用了perl風格的正規函數,以下僅對這類的字串進行說明。

 

Perl風格的正規表示式,要求包含在定界符("/" 或"#")中,如下面這樣:【參考】

$str = 'http://www.youku.com/show_page/id_ABCDEFG.html';
$regex = '/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html$/i';
$regex = '#^http://([\w.]+)/([\w]+)/([\w]+)\.html$#i';

為了將一個URL進行分割,$regex 變數定義了正規表示式字串:

^http://([\w.] )/([\w] )/([\w ] ).html$

這個字串包含了一些特殊字符,如"/" 與".",這在Perl風格中需要用反斜杠("\")進行轉義定義,如下:

^http:\/\/([\w.] )\/([\w] )\/([\w] )\.html$

同時這個字符串需要被包含在定界符中,於是就有了上面的兩類表示方式;以"#"為定界符的,不需要對其中的"/" 進行轉義。

正則表達式轉義

在正規表示式中,若要匹配以下單個字符,都需要用反斜線("\")進行轉義:

"\"、"? "、"*"、"^"、"$"、" "、"("、")"、"|"、"{"、"["

在Perl風格的正規表示式中,如果匹配以下單個字符,或者上面未匹配的單個字符,則需要用反斜杠("\")進行轉義:

^=}]/:a8093152e673feb7aba1828c43532094.'"

總結

要寫出一個正確的Perl風格正規表示式字串,需要進行三個步驟:

寫出正確的正規表示式,注意特殊字元的轉義

放入定界符中,並以Perl風格的轉義規則進行轉義

#對上述字串的內容,依照PHP字串定義的方式進行轉義

以上是php 正規特殊字元轉義的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn