您好,登錄后才能下訂單哦!
這篇文章主要介紹php正則特殊字符轉(zhuǎn)義的方法,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
php正則特殊字符轉(zhuǎn)義的方法:首先創(chuàng)建PHP示例文件;然后定義字符串;最后通過反斜杠對特殊字符進(jìn)行轉(zhuǎn)義,并對變量進(jìn)行解析即可。
最近使用PHP正則表達(dá)式,書寫表達(dá)式字符串的時候遇到了一些問題,不知道何時需要用反斜杠“\”,現(xiàn)在進(jìn)行一些梳理。
PHP字符串的定義方法有4種:
在定義字符串的時候,會對特殊字符進(jìn)行轉(zhuǎn)義,對變量進(jìn)行解析。
特殊字符包括:
項(xiàng)目 | 內(nèi)容 | 備注 |
換行 | \n | LF 或 0x0A |
回車 | \r | CR 或 0x0D |
水平制表符 | \t | HT 或 0x09 |
垂直制表符 | \v | VT 或 0x0B |
換頁 | \f | FF 或 0x0C |
反斜杠 | \\ | |
美元符號 | \$ | |
雙引號 | \" | |
單引號 | \' | |
8進(jìn)制字符 | \[0-7]{1,3} | |
16進(jìn)制字符 | \x[0-9A-Fa-f]{1,2} |
這部分詳見 PHP Mannual ,這里簡要記述一下:
單引號中,對單引號(')與反斜杠(\)進(jìn)行轉(zhuǎn)義,對其它字符原意輸出;
雙引號中,對除雙引號(\")的特殊字符進(jìn)行轉(zhuǎn)義,對變量進(jìn)行解析。
因此,在這兩種常見的字符串定義中,對反斜杠(\)總是要轉(zhuǎn)義的。
PHP提供了兩套正則表達(dá)式函數(shù)庫:【參考】
一套是由PCRE(Perl Compatible Regular Expression)庫提供的。使用“preg_”為前綴命名的函數(shù);
一套由POSIX(Portable Operating System Interface of Unix )擴(kuò)展提供的(PHP默認(rèn))。使用以“ereg_”為前綴命名的函數(shù);
正則表達(dá)式提供了匹配、替換、分割的功能。
目前只是用了perl風(fēng)格的正則函數(shù),以下僅對這類的字符串進(jìn)行說明。
Perl風(fēng)格的正則表達(dá)式,要求包含在定界符("/" 或 "#")中,如下面這樣:【參考】
$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進(jìn)行分割,$regex 變量定義了正則表達(dá)式字符串:
^http://([\w.]+)/([\w]+)/([\w]+).html$
這個字符串包含了一些特殊字符,如"/" 與".",這在Perl風(fēng)格中需要用反斜杠("\")進(jìn)行轉(zhuǎn)義定義,如下:
^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html$
同時這個字符串需要被包含在定界符中,于是就有了上面的兩類表示方式;以"#"為定界符的,不需要對其中的"/" 進(jìn)行轉(zhuǎn)義。
在正則表達(dá)式中,若要匹配以下單個字符,都需要用反斜杠("\")進(jìn)行轉(zhuǎn)義:
"\"、"?"、"*"、"^"、"$"、"+"、"("、")"、"|"、"{"、"["
在Perl風(fēng)格的正則表達(dá)式中,如果匹配以下單個字符,或者上面未匹配的單個字符,還需要用反斜杠("\")進(jìn)行轉(zhuǎn)義:
^=}]/:<>.'"
要寫出一個正確的Perl風(fēng)格正則表達(dá)式字符串,需要進(jìn)行三步:
寫出正確的正則表達(dá)式,注意特殊字符的轉(zhuǎn)義
放入定界符中,并以Perl風(fēng)格的轉(zhuǎn)義規(guī)則進(jìn)行轉(zhuǎn)義
對上述字符串的內(nèi)容,按照PHP字符串定義的方式進(jìn)行轉(zhuǎn)義
以上是php正則特殊字符轉(zhuǎn)義的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。