本篇講解了php與正則表達的使用講解
Regex是php中一個非常重要的知識點,通常用來尋找和替換字串,最常用的就是驗證使用者輸入的資訊格式是否正確,
如郵件格式、電話格式等等。還有比如採集器之類的軟體中,正則也是必用不可!
現在開始來學習Regex的基本文法:
1.“/”是定界符,“/”定界符之間的部分就是將要在目標對象中進行匹配的模式。同時為了正則更加靈活,引入了元字元,即“+”, “*”,以及 “?”。
(1)“+”元字元規定其前置字元必須在目標對象中連續出現一次或多次
比如:/php+/,能夠與“phpp”匹配,即字母ph後面連續出現一個或多個字母p的字串相匹配。
(2)“*”元字元規定其前置字元必須在目標對象中出現零次或連續多次
比如:/php*/能夠與“phpddt”相匹配,即ph後面可以有0個或多個p
(3)“?”元字元規定其前置對象必須在目標對象中連續出現零次或一次。
比如:/php?/能夠“pher”匹配,即phh後面可以有0個或者1個p
其他重要的元字元:
\s:用於匹配單個空格符,包括tab鍵和分行符號;
\S:用於匹配除單個空格符之外的所有字元;
\d:用於匹配從0到9的數字;
\w:用於匹配字母,數字或底線;
\W:用於匹配所有與\w不匹配的字元;
. :用於匹配除分行符號之外的所有字元。
樣本:/\s+/用於匹配目標對象中的一個或多個空白字元
2.定位器用於規定匹配模式在目標對象中的出現位置。常用的有“^”, “$”, “\b” 以及 “\B”
(1)“^”定位器規定匹配模式必須出現在目標字串的開頭
(2)“$”定位器規定匹配模式必須出現在目標對象的結尾
(3)\b定位器規定匹配模式必須出現在目標字串的開頭或結尾的兩個邊界之一
(4)“\B”定位器則規定匹配對象必須位於目標字串的開頭和結尾兩個邊界之內
3.php的正則匹配模式非常靈活,可以指定某一範圍
例如:
/[A-Z]/
上述Regex將會與從A到Z範圍內任何一個大寫字母相匹配。
/[a-z]/
上述Regex將會與從a到z範圍內任何一個小寫字母相匹配。
/[0-9]/
上述Regex將會與從0到9範圍內任何一個數字相匹配。
/([a-z][A-Z][0-9])+/
上述Regex將會與任何由字母和數字組成的字串
4.可以同時與多種模式選擇匹配
如/phpddt.com|phpddt|100/可以與“phpddt.com” “phpddt” “100”相匹配
5.否定符 “[^]”規定目標對象中不能存在模式中所規定的字串
例如:[^phpddt]匹配除了phpddt字元外的所有東西
下面來講講Regex常用函數吧!(非常重要)
<?php//preg_match("Regex","字串")用於在字串中尋找匹配項$email = "987044391@qq.com";if (preg_match("/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([.a-zA-Z0-9_-])+([.a-zA-Z0-9_-]+)+([.a-zA-Z0-9_-])$/",$email)){ echo '匹配成功<hr />';}else { echo '匹配失敗<hr />';}//preg_quote("字串") 在每個有Regex文法前面加入一個逸出字元即\ $str = "php點點通是一個學習php的網站,(⊙o⊙)…";echo preg_quote($str);echo "<hr />"; //preg_split("正則","字串")分割字串$php = "+php++點點通++++是好網站";$field = preg_split("/\+{1,}/",$php);foreach($field as $f){echo $f." ";}echo "<hr />";//preg_grep("正則","字串") 與數組匹配後返回新數組$phpddt = array("php點點通","php100","呵呵","hahaha","phpchina");$item = preg_grep("/^php/",$phpddt);print_r($item); echo "<hr />";//preg_replace("正則","替換內容","原字串") 很重要,很常用$a = "歡迎光臨https://www.jb51.net/"; //給http開頭的加上超連結echo preg_replace("/http:\/\/(.*)\//","<a href=\"\${0}\">\${0}</a>","$a");?>
本篇講解了正則表達的相關知識,更多相關內容請關注php中文網。