摘要:之正則表達式函數(shù)總結(jié)匹配用于匹配常用的函數(shù)有兩個,分別是和看代碼一般三個參數(shù)正則需要匹配的字符串因為匹配到了個就會停止匹配將所有滿足正則規(guī)則的匹配放到數(shù)組里。
php之正則表達式函數(shù)總結(jié)
匹配
用于匹配常用的函數(shù)有兩個,分別是preg_match和preg_match_all
看代碼:
//preg_match($pattern, $subject, &$match, [$flags=0], [$offset=0]) 一般三個參數(shù) $pattern = "/[0-9]/"; //正則 $subject = "abc1def2ghi3klm4"; //需要匹配的字符串 $return = preg_match($pattern, $subject, $matches); echo $return; //1 因為匹配到了1個就會停止匹配 print_r($matches); // ["1"] 將所有滿足正則規(guī)則的匹配放到數(shù)組里。 //preg_match_all($pattern, $subject, $matches,...) $pattern = "/[0-9]/";//正則字符串 $subject = "abc1def2ghi3klm4";//需要匹配的目標字符串 $return = preg_match_all($pattern, $subject, $matches); echo $return;//4 因為會匹配所有的 print_r($matches);//[0=>["1","2","3","4"]] 注意是個二維數(shù)組。
替換
用于替換常用的函數(shù)也有兩個preg_replace和preg_filter,這兩個灰常的相似?。?!
看代碼:
//preg_replace($pattern, $replacement, $subject) $pattern = "/[0-9]/"; $replacement = "嘿嘿嘿"; $subject = "a1b2c3"; $return = preg_replace($pattern, $replacement, $subject); echo $return; //"a嘿嘿嘿b嘿嘿嘿c嘿嘿嘿" //preg_filter($pattern, $replacement, $subject) //和preg_replace 沒有任何變化 $pattern = "/[0-9]/"; $replacement = "嘿嘿嘿"; $subject = "a1b2c3"; $return = preg_filter($pattern, $replacement, $subject); echo $return; //"a嘿嘿嘿b嘿嘿嘿c嘿嘿嘿" //但是$pattern 和 $subject都是數(shù)組呢 $pattern = array("/[0-3]/", "/[4-6]/", "/[7-9]/"); $replacement = array("小", "中", "大"); $subject = array("a", "b", "1as", "d", "s5d", "7qq"); $return = preg_replace($pattern, $replacement, $subject); print_r($return); //結(jié)果 Array ( [0] => a [1] => b [2] => 小as [3] => d [4] => s中d [5] => 大qq ) $pattern = array("/[0-3]/", "/[4-6]/", "/[7-9]/"); $replacement = array("小", "中", "大"); $subject = array("a", "b", "1as", "d", "s5d", "7qq"); $return = preg_filter($pattern, $replacement, $subject); print_r($return); //結(jié)果 Array ( [2] => 小as [4] => s中d [5] => 大qq )
數(shù)組匹配 + 分割
分別是preg_grep和preg_split
看代碼:
//趁熱打鐵 其實preg_grep呢 就是preg_filter的閹割版 只匹配 不替換而已 //preg_grep($pattern, $subject) $subject = ["r", "a2", "b3", "c", "d"]; $pattern = "/[0-9]/"; $fl_array = preg_grep($pattern, $subject); print_r($fl_array); //結(jié)果: Array ( [1] => a2 [2] => b3 ) //注意索引 //preg_split($pattern, $subject) 返回分割后的數(shù)組 $subject = "a132b456c777d"; $pattern = "/[0-9]+/"; 匹配至少一個數(shù)字 $return = preg_split($pattern, $subject); print_r($return); //結(jié)果: Array ( [0] => a [1] => b [2] => c [3] => d )
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/30657.html
摘要:正則表達式作為一個匹配的模板,是由定界符,原子普通字符,例如有特殊功能的字符稱為元字符,例如等以及模式修正符等部分組成的文字模式。正則表達式中可以使用編碼。限定符限定符用來指定正則表達式的一個給定原子必須要出現(xiàn)多少次才能滿足匹配。 正則表達式的定義 正則表達式就是描述字符排列模式的一種自定義的語法規(guī)則。由于正則表達式本身具有一套非常完整的、可以編寫模式的語法體系,提供了一種靈活且直觀的...
摘要:內(nèi)置函數(shù)的性能優(yōu)劣。產(chǎn)生額外開銷的錯誤抑制符號,最好別用不管是性能優(yōu)化和項目的健壯性等方面。在方法中遞增局部變量,速度是最快的。類似的方法調(diào)用所花費的時間接近于次的局部變量遞增操作。 什么情況之下,會遇到PHP性能問題?1:PHP語法使用不恰當。2:使用PHP語言做了它不擅長的事情。3:使用PHP語言連接的服務不給力。4:PHP自身的短板(PHP自身做不了的事情)。5:我們也不知道的問...
摘要:非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串。 導讀 你有沒有在搜索文本的時候絞盡腦汁, 試了一個又一個表達式, 還是不行. 你有沒有在表單驗證的時候, 只是做做樣子(只要不為空就好), 然后燒香拜佛, 虔誠祈禱, 千萬不要出錯. 你有沒有在使用sed 和 grep 命令的時候, 感覺莫名其妙, 明明應該支持的元字符, 卻就是匹配不到. 甚至,...
閱讀 1829·2023-04-26 00:59
閱讀 3130·2021-11-15 18:10
閱讀 3072·2021-09-22 16:02
閱讀 766·2021-09-02 15:15
閱讀 3716·2019-08-30 15:56
閱讀 1917·2019-08-30 15:54
閱讀 2858·2019-08-29 16:31
閱讀 2035·2019-08-29 16:10