PHP入門教程之正則表達(dá)式基本用法實(shí)例詳解(正則匹配,搜索,分割等)
本文實(shí)例講述了PHP正則表達(dá)式基本用法。分享給大家供大家參考,具體如下:
Demo1.php
<?php //嘗試著寫第一個(gè)正則表達(dá)式 //第一個(gè)參數(shù),表示模式(就是和字符串去比較,匹配) //第二個(gè)參數(shù),表示字符串 //如果整個(gè)函數(shù)模式和字符串比較后匹配了,那么返回真(true)1,否則返回假(false)0 //什么叫匹配,就是一個(gè)一個(gè)的比較過去 //按照什么規(guī)則??按照模式來匹配 //只要模式全部通過,那么就通過 //匹配和相等是兩個(gè)概念 //因?yàn)槟壳暗哪J绞且粋€(gè)整體,php //所以,字符串只要有連在一起的 php 三個(gè)字符,不管怎樣的字符串都能匹配 $mode = '/php/'; //規(guī)則模式 $string = 'fsdfsdfsdphpfsdfs'; //字符串 //echo preg_match($mode,$string); if( preg_match($mode,$string)){ echo '匹配'; }else{ echo '不匹配'; } //echo preg_match('/php/','php'); // if('a'=='a'){ // echo '相等'; // }else { // echo '不相等'; // } ?>
Demo2.php
<?php //什么叫前導(dǎo),前面的一個(gè)字符 //+ 號(hào)的前導(dǎo)字符就是 h //h+ 的意思是,至少包含一個(gè) h //+ 號(hào)的意思 //$mode = '/ph+p/'; //規(guī)則模式 //h* 的意思是,零個(gè)或者多個(gè) h //* 號(hào)雖然可以是零個(gè),但是前導(dǎo)字符不能更改,更改了,就不匹配了 //$mode = '/ph*p/'; //規(guī)則模式 //h? 的意思是,零個(gè)或者一個(gè) h //? 多個(gè)前導(dǎo)字符不行 //$mode = '/ph?p/'; //規(guī)則模式 //.的意思是,任意一個(gè)字符,所以,兩個(gè)點(diǎn),就是任意兩個(gè)字符 //$mode = '/p.p/'; //規(guī)則模式 //.* 表示前導(dǎo)任意字符,并且零個(gè)或者多個(gè) //$mode = '/p.*p/'; //規(guī)則模式 //h{3} 表示,前導(dǎo)必須是3 個(gè), //$mode = '/ph{3}p/'; //規(guī)則模式 //h{3,5}表示,前導(dǎo)必須是 3 到 5 個(gè) //$mode = '/ph{3,5}p/'; //規(guī)則模式 //h{3,} 表示,前導(dǎo)至少 3 個(gè) h //$mode = '/ph{3,}p/'; //規(guī)則模式 //$符號(hào),一般加在模式的字符串尾巴上 //表示從尾巴開始匹配 //$mode = '/php$/'; //規(guī)則模式 //^表示,從開頭進(jìn)行匹配 //$mode = '/^php/'; //規(guī)則模式 //^ 和 $ 一起用的,基本上不要用正則了,直接用 == 號(hào)即可 //$mode = '/^php$/'; //規(guī)則模式 //| 是一個(gè)條件選擇符,如果有其中一個(gè),即可匹配。 //$mode = '/php|asp/'; //規(guī)則模式 //() $mode = '/(this) (is) (php|asp)/'; //規(guī)則模式 $string = 'this is php'; //字符串 //echo preg_match($mode,$string); if( preg_match($mode,$string)){ echo '匹配'; }else{ echo '不匹配'; } ?>
Demo3.php
<?php //元子符 //[]中括號(hào),是一種正則里的語法 //里面的東西表示任意一個(gè)即可 //[a-z] 表示 26 個(gè)字母中,隨便其中一個(gè) //$mode = '/[a-z]/'; //規(guī)則模式 //[0-9] 表示 0-9,隨便其中一個(gè) //$mode = '/[0-9]/'; //規(guī)則模式 //[asv] 其中一個(gè) //$mode = '/[asv]/'; //規(guī)則模式 //[a-zA-Z0-9_] 表示其中一個(gè)匹配 [a-zA-Z0-9_] 中的任意一個(gè) //$mode = '/[a-zA-Z0-9_]/'; //規(guī)則模式 //不是在開頭匹配行首的^,而是中括號(hào)里的 ^ //[^] 表示匹配除了abc 外都能匹配的字符串 //$mode = '/[^abc]/'; //規(guī)則模式 //為了讓人們使用更加的方便,\w 代表 [a-zA-Z0-9_] //$mode = '/[\w]/'; //規(guī)則模式 //\W 正好和 \w相反 //$mode = '/[\W]/'; //規(guī)則模式 //\d 和 [0-9] 一樣 //$mode = '/\d/'; //規(guī)則模式 //\D 和 [^0-9] 一樣 //$mode = '/\D/'; //規(guī)則模式 //\s匹配任何空白字符 //$mode = '/\s/'; //規(guī)則模式 //\S不包含空白字符 //$mode = '/\S/'; //規(guī)則模式 //\b表示到達(dá)了單詞的邊界,如果沒有到達(dá)就不匹配,邊界可以理解為空格 //$mode = '/php\b/'; //規(guī)則模式 //\B 表示沒有到達(dá)邊界 //$mode = '/php\B/'; //規(guī)則模式 //因?yàn)?+ 號(hào)是正則里的特殊字符 //如果要匹配特殊字符的話,必須加上 \ $mode = '/p\+p/'; //規(guī)則模式 $string = 'p+p'; //字符串 if( preg_match($mode,$string)){ echo '匹配'; }else{ echo '不匹配'; } ?>
Demo4.php
<?php //修飾符 //修飾符放在 // 的外面 //i 表示不區(qū)分大小寫 // $mode = '/php/i'; //規(guī)則模式 // $string = 'PHP'; //字符串 //m 表示匹配首尾的時(shí)候,如果遇到換行,也應(yīng)該承認(rèn)是結(jié)尾 // $mode = '/php$/m'; //規(guī)則模式 // $string = "this is a php\n ,is goods"; //字符串 //x 表示忽略掉規(guī)則模式中的空白字符 // $mode = '/php/x'; //規(guī)則模式 // $string = 'ph p'; //字符串 //A 表示必須從頭開始匹配 $mode = '/php/A'; //規(guī)則模式 $string = 'phpfsdfd'; //字符串 if( preg_match($mode,$string)){ echo '匹配'; }else{ echo '不匹配'; } ?>
Demo5.php
<?php //搜索數(shù)組中的相匹配的字符串 //preg_grep() 函數(shù) $language = array('php','asp','jsp','python','ruby'); //找出最流行的 3p 語言 //這三門語言的匹配共同點(diǎn)是什么,最后結(jié)尾都是 p //結(jié)尾匹配 p /p$/ //$mode = '/p$/'; //打印出開頭為 p 的語言 $mode = '/^p/'; //python 蟒蛇語言,在國(guó)外有取代 PHP 的傳聞 print_r(preg_grep($mode,$language)); ?>
Demo6.php
<?php //搜索模式,最后返回的是真或者是假,1,10 echo preg_match('/php[1-6]/','php5'); ?>
Demo7.php
<?php //電子郵件的小案例 //通過拆分的方法分組 $mode = '/^([\w\.]{2,255})@([\w\-]{1,255}).([a-z]{2,4})$/';//模式不能缺少 $string = 'oneStopWeb@163.com'; if(preg_match($mode,$string)){ echo '電子郵件合法'; }else{ echo '電子郵件不合法'; } ?>
Demo8.php
<?php //匹配全局正則 //將字符串的所有匹配得到的結(jié)果放到一個(gè)數(shù)組變量里 preg_match_all('/php[1-5]/','php5fsdfsdphp6fsdfsdfphp4',$out); print_r($out);//Array ( [0] => Array ( [0] => php5 [1] => php4 ) ) echo $out[0][0];//php5 ?>
Demo9.php
<?php //定界定則 echo preg_quote('PHP is $150'); //PHP is \$150 ?>
Demo10.php
<?php //搜索匹配的結(jié)果,然后替換掉 //第一個(gè)參數(shù),存的是正則模式 //第二參數(shù),放的是替換掉的字符串 //第二個(gè)參數(shù),字符 //將第三個(gè)參數(shù)的字符串的 php5,php6 替換成了 oneStopWeb echo preg_replace('/php[1-6]/','oneStopWeb','This is a php5,This is a php6'); //This is a oneStopWeb,This is a oneStopWeb ?>
Demo11.php
<?php //貪婪和分組獲取的案例,ubb //我要將這個(gè) [b][/b] 換成 <strong></strong> //注意一個(gè)問題,這個(gè)時(shí)候的 [] 中括號(hào),是字符串的括號(hào),而不是語法[a-z] //. 表示匹配任意字符一個(gè),加上一個(gè) * 號(hào)表示匹配零個(gè)或者多個(gè) //用括號(hào)分為三組,那么第一組就是\1,第二組就是\2,第三組就是\3 //目前只有1 組,\1 //第一問題,第一個(gè)[b]和最后一個(gè)[/b]匹配了 //解決貪婪匹配。 $mode = '/(\[b\])(.*)(\[\/b\])/U';//U 禁止貪婪 $replace = '<strong>\2</strong>'; $string = 'This is a [b]php5[/b],This is a [b]php6 [/b]'; //echo $string; echo preg_replace($mode,$replace,$string); ?>
Demo12.php
<?php //用正則表達(dá)來進(jìn)行分割 //如果沒有 [] 符號(hào),就表示,要同時(shí)滿足 print_r(preg_split('/[.@]/','oneStopWeb@163.com')); //Array ( [0] => oneStopWeb [1] => 163 [2] => com ) ?>
PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:
JavaScript正則表達(dá)式在線測(cè)試工具:
http://tools.jb51.net/regex/javascript
正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php正則表達(dá)式用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
PHP定時(shí)執(zhí)行計(jì)劃任務(wù)的多種方法小結(jié)
PHP不支持多線程,有時(shí)候處理問題不是那么爽,今天談?wù)撘幌翽HP定時(shí)執(zhí)行的方法2011-12-12thinkphp5.1 框架鉤子和行為用法實(shí)例分析
這篇文章主要介紹了thinkphp5.1 框架鉤子和行為用法,結(jié)合實(shí)例形式分析了thinkphp5.1 框架鉤子和行為基本功能、定義、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-05-05