1. 程式人生 > >PHP的正則表達式

PHP的正則表達式

explode perl 並且 大小寫 返回 完成 off grep 次數

正則表達式

PHP支持的正則表達式有兩套,一套是PCRE,與perl兼容的正則表達式,以preg_為前綴的函數,另外一套是POSIX擴展語法的正則表達式,使用以ereg_為前綴的函數,PCRE提供的正則表達式效率略占優勢。

1. 正則表達式語法和perl中一樣;

2. 字符串查找

preg_match():接受三個參數,第一個是pattern,第二個是就具體的字符串,第三個參數提供一個數組,保存匹配的內容,其中0下標為匹配的整體,而1開始的表示捕獲的內容;

preg_match_all():PHP中沒有模式修正符號:g,用該函數替代,完成全部搜索的功能,區別的是該函數接受第四個可選參數,當第四個參數為PREG_SET_ORDER,下標0的值開始表示捕獲的內容;

preg_grep():第二個參數不再是字符串,而是一個包含字符串的數組,會對數組中每個元素進行匹配,並且返回一個匹配成功的數組;

strstr():傳入兩個字符串,在第一個字符串中搜索第二個字符串,返回從第一個字符串從第一次搜索到的位置開始的部分;stristr()是忽略大小寫的版本;

strpos():返回字符串在另外一個字符串中第一次出現的位置,如果沒有找到則返回false,strrpos()是從末尾開始查找的版本;

substr():返回一個字符串的一個部分,指定開始和結束位置;閉區間;

3. 字符串替換:

preg_replace():第一個參數是模式,第二個參數是需要替換掉的內容,第三個參數是字符串,前兩個參數既可以是單個的模式和字符串,也可以是一個包含多個模式、字符串的數組,數組的內容應該對應,長度相同;

str_replace():第一個參數是查找的字符串,第二個參數是替換的字符串,第三個參數是需要被替換的字符串內容,第四個保存替換的次數;str_ireplace()是大小寫忽略版本;

4. 字符串分割和鏈接:

preg_split():傳入兩個參數,第一個參數傳入匹配模式,第二個為需要分割的字符串,第三個可選參數限制最多返回的子串個數,第四個參數flag是以下標記的任意組合:

PREG_SPLIT_NO_EMPTY:使preg_split()只返回非空成分 ;
PREG_SPLIT_DELIM_CAPTURE:使得可以捕獲並返回括號表達式 ;
PREG_SPLIT_OFFSET_CAPTURE:使得返回每個出現的匹配結果的同時,返回所屬字符串的偏移量,最終最為一個二元數組;

explode():傳入兩個字符串,第一個為分割標記字符串,第二個為被分割的字符串,第三個可選參數限制最多返回的子串個數;相當於split();

implode():第一個參數是鏈接字符串,第二個參數提供一個字符串數組,返回使用鏈接字符串鏈接數組中字符串後的字符串;相當於join();

5. 在以上三種基本操作中,如果可以用字符串函數完成的盡量使用字符串函數完成,正則表達式盡量在必須使用的時候才用

PHP的正則表達式