標籤:join 個數 標記 str 替換 連結 pcre xpl 運算式
Regex
PHP支援的Regex有兩套,一套是PCRE,與perl相容的Regex,以preg_為首碼的函數,另外一套是POSIX擴充文法的Regex,使用以ereg_為首碼的函數,PCRE提供的Regex效率略佔優勢。
1. Regex文法和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. 在以上三種基本操作中,如果可以用字串函數完成的盡量使用字串函數完成,Regex盡量在必須使用的時候才用
PHP的Regex