PHP的正則表達式學習教程

這幾天一直面臨着如何去除字符串中的html標籤的問題,我的解決方法是使用PHP中的正則表達式來匹配處理,存儲在數據庫表中的標籤有很多類,葉德華覺得具有代表性的就只有:<p></p>、<img src="" />、<br />、<a href="http://username:password@hostname/path?arg=value#anchor">23</a>,我覺的只要處理好這幾類標籤,並且忽略下大小寫就好了,所以我寫的正則表達式是:/<[\w\s\/="\?@\#\'\._:]*>/i,下面就從這裏開始介紹下PHP中的正則表達式:

(1)定界符

在PHP中,通常使用左斜槓(/)或者井號(#)來作爲定界符的開始和結束,一般常見的都是左斜槓(/),井號(#)通常用在正則表達式中出現左斜槓(/)太多,而不宜再添加左斜槓(/)來影響代碼可讀性的時候使用。例如在一個網址中:

簡單的一個網址:http://www.yedward.net/post/20.html

正則表達式:/^http:\/\/[\w.]+[\w]+\/[\w]+\/[\d]+.html$/,由於其中左斜槓(/)太多了,影響可讀性,這個時候就可以把最前最後的兩個定界符換成#來使用,這個時候就可以不用對左斜槓進行轉義操作了,改寫成:#^http://[\w.]+[\w]+/[\w]+/[\d]+.html$#。

(2)修飾符

修飾符的作用是用來改變正則表達式的行爲。就比如上面的例子進行匹配的時候,只會匹配大小寫一樣的,如果網址是:HTTP://WWW.YEDWARD.NET/POST/20.HTML,這個時候進行匹配,就會出錯,因爲沒有忽略大小寫,想要成功匹配只要在定界符後面加一個字母i,將正則表達式改成:/^http:\/\/[\w.]+[\w]+\/[\w]+\/[\d]+.html$/i。正則表達式的修飾符有很多,可以只在參考PHP手冊,這裏不多說。

(3)字符域

可以理解爲用方括號[]括起來的就是字符語,可以理解成是一羣字符的集合。比如,如果你要匹配的字符串中又包括數字又包括小寫英文字母,這個時候你就可以寫成/[\d\w]*/。

(4)限定符

顧名思義,限定符起到的就是一個限定的作用。例如,整數的正則表達式可以是:/[\d]+/,其中加號(+)表示一個或者多個,也可以寫成/[\d]{1,}/,如果是表示0個或者多個就是/[\d]{0,}/。

(5)脫字符

脫字符指的是^,如果^放在字符域中,它表示的是否定不包括的意思,比如/[^\d]/即爲不是整數。如果^放在表達式之前,開始定界符的後面,則表示從當前字符開始,那麼在匹配的時候,就一定要要以^後面的那個字符作爲開始,比如/^[\d]+/就表示要以整數開始。當^表示開始的時候,通常與它在一起用的還有$,它表示的就是結束。

對於正則表達式,不同的人對於同一個對象的描述可能都不同,可能有的人會寫的繁瑣一點,有的人會寫的特別簡單,看起來好像特別難,多看看別人寫的,多自己去寫寫,其實發現也不是多麼的難以觸及。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章