PHP學(xué)習(xí)之正則表達(dá)式
更新時(shí)間:2011年04月17日 22:17:54 作者:
PHP支持兩種正則表達(dá)式,POSIX風(fēng)格的正則表達(dá)式和兼容Perl風(fēng)格的正則表達(dá)式。
現(xiàn)在我們大家所說(shuō)的正則表達(dá)式基本上是指兼容Perl風(fēng)格的正則表達(dá)式。POSIX風(fēng)格的正則表達(dá)式基本上沒(méi)人使用了,所以從PHP5.3起,已經(jīng)不推薦使用了,可能到PHP的下一個(gè)版本就會(huì)把相關(guān)的函數(shù)刪除。
關(guān)于正則表達(dá)式,因?yàn)樘珡?fù)雜,所以以后想專看一本正則的書(shū),所以只介紹兼容Perl風(fēng)格的正則表達(dá)式的一些函數(shù)。
1. 定界符
定界符表示正則表達(dá)式的開(kāi)始和結(jié)尾,一般用斜線(/)表示。在PHP中(其它語(yǔ)言暫時(shí)沒(méi)有測(cè)試過(guò)),它也可以用其它的非數(shù)字字母的字符來(lái)代替。如/\d+/和#\d+#的表示同一個(gè)正則表達(dá)式\d+。同時(shí),也可以用小括號(hào)對(duì),中括號(hào)對(duì),大括號(hào)對(duì)做為定界符,如[\d+]。
2. 函數(shù)
匹配函數(shù):preg_match(); 以及preg_match_all();
替換函數(shù):preg_replace();
拆分函數(shù):preg_split();
過(guò)濾函數(shù):preg_grep();
示例代碼:
$a = <<< TEXT
aaaaaaa 15
bbbbbbb 16
TEXT;
$ret = preg_match(/(\w+) (\d+)/, $a, $match);
// $ret : 1
// $match : array(aaaaaaa 15′, aaaaaaa, 15′)
$ret = preg_match_all(/(\w+) (\d+)/, $a, $match);
// $ret : 2
// $match : array(
// array(aaaaaaa 15′, bbbbbbb 16′),
// array(bbbbbbb, bbbbbbb),
// array(15′, 16′),
// )
$ret = preg_match_all(/(\w+) (\d+)/, $a, $match, PREG_SET_ORDER);
// $ret : 2
// $match : array(
// array(aaaaaaa 15′, bbbbbbb, 15′),
// array(bbbbbbb 16′, bbbbbbb, 16′),
// )
$b = preg_replace(/(\w+) (\d+)/, \1, \2′, $a);
// $b : aaaaaaa, 15
// bbbbbbb, 16′
$c = preg_split(/\s/, $a);
// $c : array(aaaaaaa, 15′, bbbbbbb, 16′)
$files = array(aa.txt, bb.xls, cc.txt);
$txtFiles = preg_grep(/.*\.txt/, $files);
// $txtFiles : array(aa.txt, cc.txt)
參考資料:
PHP程序設(shè)計(jì),2003,第四章 字符串,正則表達(dá)式
關(guān)于正則表達(dá)式,因?yàn)樘珡?fù)雜,所以以后想專看一本正則的書(shū),所以只介紹兼容Perl風(fēng)格的正則表達(dá)式的一些函數(shù)。
1. 定界符
定界符表示正則表達(dá)式的開(kāi)始和結(jié)尾,一般用斜線(/)表示。在PHP中(其它語(yǔ)言暫時(shí)沒(méi)有測(cè)試過(guò)),它也可以用其它的非數(shù)字字母的字符來(lái)代替。如/\d+/和#\d+#的表示同一個(gè)正則表達(dá)式\d+。同時(shí),也可以用小括號(hào)對(duì),中括號(hào)對(duì),大括號(hào)對(duì)做為定界符,如[\d+]。
2. 函數(shù)
匹配函數(shù):preg_match(); 以及preg_match_all();
替換函數(shù):preg_replace();
拆分函數(shù):preg_split();
過(guò)濾函數(shù):preg_grep();
示例代碼:
復(fù)制代碼 代碼如下:
$a = <<< TEXT
aaaaaaa 15
bbbbbbb 16
TEXT;
$ret = preg_match(/(\w+) (\d+)/, $a, $match);
// $ret : 1
// $match : array(aaaaaaa 15′, aaaaaaa, 15′)
$ret = preg_match_all(/(\w+) (\d+)/, $a, $match);
// $ret : 2
// $match : array(
// array(aaaaaaa 15′, bbbbbbb 16′),
// array(bbbbbbb, bbbbbbb),
// array(15′, 16′),
// )
$ret = preg_match_all(/(\w+) (\d+)/, $a, $match, PREG_SET_ORDER);
// $ret : 2
// $match : array(
// array(aaaaaaa 15′, bbbbbbb, 15′),
// array(bbbbbbb 16′, bbbbbbb, 16′),
// )
$b = preg_replace(/(\w+) (\d+)/, \1, \2′, $a);
// $b : aaaaaaa, 15
// bbbbbbb, 16′
$c = preg_split(/\s/, $a);
// $c : array(aaaaaaa, 15′, bbbbbbb, 16′)
$files = array(aa.txt, bb.xls, cc.txt);
$txtFiles = preg_grep(/.*\.txt/, $files);
// $txtFiles : array(aa.txt, cc.txt)
參考資料:
PHP程序設(shè)計(jì),2003,第四章 字符串,正則表達(dá)式
相關(guān)文章
php學(xué)習(xí)之 認(rèn)清變量的作用范圍
變量的存在有著它的生命周期,我們可以讓它存在于一個(gè)小的函數(shù)內(nèi)部,也可讓它存在于整個(gè)程序當(dāng)中。對(duì)于一般情況下聲明的變量,我們稱之為局部變量,只能在當(dāng)前程序段中存在,而使用$globals聲明出來(lái)的變量則是在當(dāng)前頁(yè)面整個(gè)程序當(dāng)中都會(huì)有效。2010-01-01php讀取本地文件常用函數(shù)(fopen與file_get_contents)
下面我們以.txt文件為實(shí)例來(lái)介紹php讀取本地文件的函數(shù),讀取文件我們可以利用fopen或file_get_contents來(lái)讀取,file_get_contents更簡(jiǎn)單而fopen需要fread配合才可以顯示讀出的內(nèi)容2013-09-09PHP 5 數(shù)據(jù)對(duì)象 (PDO) 抽象層與 Oracle
PHP 5 數(shù)據(jù)對(duì)象 (PDO) 抽象層與 Oracle...2006-10-10如何在PHP中使用Oracle數(shù)據(jù)庫(kù)(1)
如何在PHP中使用Oracle數(shù)據(jù)庫(kù)(1)...2006-10-10PHP PDOStatement::setAttribute講解
今天小編就為大家分享一篇關(guān)于PHP PDOStatement::setAttribute講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02