日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

PHP正則表達(dá)式:PHP中的正則函數(shù)

admin
2012年4月4日 1:48 本文熱度 3082




提示:PHP正則表達(dá)式主要用于字符串的模式分割、匹配、查找及替換操作。使用正則表達(dá)式在某些簡單的環(huán)境下可能效率不高,因此如何更好的使用PHP正則表達(dá)式需要綜合考慮。

PHP正則表達(dá)式主要用于字符串的模式分割、匹配、查找及替換操作。使用正則表達(dá)式在某些簡單的環(huán)境下可能效率不高,因此如何更好的使用PHP正則表達(dá)式需要綜合考慮。


我的PHP正則入門,是起源于網(wǎng)上的一篇文章,這篇文章由淺入深的闡述了PHP正則表達(dá)式使用的方法,我覺得是一個很好的入門材料,不過學(xué)成還是要 靠個人,在使用的過程中,還是會不斷地忘記,因此反反復(fù)復(fù)的閱讀了這篇文章有四五遍,對于其中一些比較困難的知識點,甚至要用很久才能消化,但是只要能見 堅持著看完,你會發(fā)現(xiàn)自己對于正則的運(yùn)用能力就會顯著提高。


PHP正則表達(dá)式的定義:


用于描述字符排列和匹配模式的一種語法規(guī)則。它主要用于字符串的模式分割、匹配、查找及替換操作。


PHP中的正則函數(shù):


PHP中有兩套正則函數(shù),兩者功能差不多,分別為:


一套是由PCRE(Perl Compatible Regular Expression)庫提供的。使用“preg_”為前綴命名的函數(shù);


一套由POSIX(Portable Operating System Interface of Unix )擴(kuò)展提供的。使用以“ereg_”為前綴命名的函數(shù);(POSIX的正則函數(shù)庫,自PHP 5.3以后,就不在推薦使用,從PHP6以后,就將被移除)


由于POSIX正則即將推出歷史舞臺,并且PCRE和perl的形式差不多,更利于我們在perl和php之間切換,所以這里重點介紹PCRE正則的使用。


PCRE正則表達(dá)式


PCRE全稱為Perl Compatible Regular Expression,意思是Perl兼容正則表達(dá)式。


在PCRE中,通常將模式表達(dá)式(即正則表達(dá)式)包含在兩個反斜線“/”之間,如“/apple/”。


正則中重要的幾個概念有:元字符、轉(zhuǎn)義、模式單元(重復(fù))、反義、引用和斷言,這些概念都可以在文章[1]中輕松的理解和掌握。


常用的元字符(Meta-character):


元字符     說明


\A       匹配字符串串首的原子


\Z       匹配字符串串尾的原子


\b       匹配單詞的邊界     /\bis/   匹配頭為is的字符串   /is\b/   匹配尾為is的字符串   /\bis\b/ 定界


\B       匹配除單詞邊界之外的任意字符   /\Bis/   匹配單詞“This”中的“is”


\d     匹配一個數(shù)字;等價于[0-9]


\D     匹配除數(shù)字以外任何一個字符;等價于[^0-9]


\w     匹配一個英文字母、數(shù)字或下劃線;等價于[0-9a-zA-Z_]


\W     匹配除英文字母、數(shù)字和下劃線以外任何一個字符;等價于[^0-9a-zA-Z_]


\s     匹配一個空白字符;等價于[\f\t\v]


\S     匹配除空白字符以外任何一個字符;等價于[^\f\t\v]


\f     匹配一個換頁符等價于 \x0c 或 \cL


匹配一個換行符;等價于 \x0a 或 \cJ


匹配一個回車符等價于\x0d 或 \cM


\t     匹配一個制表符;等價于 \x09\或\cl


\v     匹配一個垂直制表符;等價于\x0b或\ck


\oNN   匹配一個八進(jìn)制數(shù)字


\xNN   匹配一個十六進(jìn)制數(shù)字


\cC    匹配一個控制字符


模式修正符(Pattern Modifiers):


模式修正符在忽略大小寫、匹配多行中使用特別多,掌握了這一個修正符,往往能解決我們遇到的很多問題。


i     -可同時匹配大小寫字母


M     -將字符串視為多行


S     -將字符串視為單行,換行符做普通字符看待,使“.”匹配任何字符


X     -模式中的空白忽略不計  


U     -匹配到最近的字符串


e     -將替換的字符串作為表達(dá)使用


格式:/apple/i匹配“apple”或“Apple”等,忽略大小寫。     /i


PCRE的模式單元:


//1 提取第一位的屬性


/^\d{2} ([\W])\d{2}\\1\d{4}$匹配“12-31-2006”、“09/27/1996”、“86 01 4321”等字符串。但上述正則表達(dá)式不匹配“12/34-5678”的格式。這是因為模式“[\W]”的結(jié)果“/”已經(jīng)被存儲。下個位置“\1”引用 時,其匹配模式也是字符“/”。


當(dāng)不需要存儲匹配結(jié)果時使用非存儲模式單元“(?:)”


例如/(?:a|b|c)(D|E|F)\\1g/ 將匹配“aEEg”。在一些正則表達(dá)式中,使用非存儲模式單元是必要的。否則,需要改變其后引用的順序。上例還可以寫成/(a|b|c)(C|E|F)\2g/。


PCRE正則表達(dá)式函數(shù):







preg_match()和preg_match_all()
preg_quote()
preg_split()
preg_grep()
preg_replace()



函數(shù)的具體使用,我們可以通過PHP手冊來找到,下面分享一些平時積累的正則表達(dá)式:


匹配action屬性







$str = '';
$match = '';
preg_match_all('/\s+action=\"(?!http:)(.*?)\"\s/', $str, $match);
print_r($match);



在正則中使用回調(diào)函數(shù)







/**
* replace some string by callback function
*
*/
function callback_replace() {
$url = 'http://esfang.house.sina.com.cn';
$str = '';
$str = preg_replace ( '/(?<=\saction=\")(?!http:)(.*?)(?=\"\s)/e', 'search(\$url, \\1)', $str );

echo $str;
}

function search($url, $match){
return $url . '/' . $match;
}



帶斷言的正則匹配







$match = '';
$str = 'xxxxxx.com.cn bold font
paragraph text

';
preg_match_all ( '/(?<=<(\w{1})>).*(?=<\/\1>)/', $str, $match );
echo "匹配沒有屬性的HTML標(biāo)簽中的內(nèi)容:";
print_r ( $match );



替換HTML源碼中的地址







$form_html = preg_replace ( '/(?<=\saction=\"|\ssrc=\"|\shref=\")(?!http:|javascript)(.*?)(?=\"\s)/e', 'add_url(\$url, \'\\1\')', $form_html );



最后,正則工具雖然強(qiáng)大,但是從效率和編寫時間上來講,有的時候可能沒有explode來的更直接,對于一些緊急或者要求不高的任務(wù),簡單、粗暴的方法也許更好。


而對于preg和ereg兩個系列之間的執(zhí)行效率,曾看到文章說preg要更快一點,具體由于使用ereg的時候并不多,而且也要推出歷史舞臺了,再加個個人更偏好于PCRE的方式,所以筆者就不做比較了,熟悉的朋友可以發(fā)表下意見,謝謝。


該文章在 2012/4/4 1:48:11 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊、財務(wù)費(fèi)用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产精品国语对白露脸在线播放 | 国产综合精品在线 | 一级a爱片免费观看高清完整 | 亚洲国产尤物高清在线观看 | 91大神| 免费视频大片在线观看 | 中文字幕国产日韩 | 国产精品亚洲网红主播 | 久爱免费观看在线网站 | 韩国欧美一区二区 | 老妇喷水一区二 | 国产美女在线观看 | 国产日韩精品视频一区二区三区 | 国产精品99在线观看 | 国产偷伦精品视频 | 国产一级二级亚洲 | 国产高清精品一区二区不卡 | 亚洲精品美女偷拍一区二 | 欧美高清一区 | 99在线热播 | 九七电影院 | 五十路息与子在线观看 | 精品国精品国产自在 | 精品第一国产久精国产宅男66 | 91精品一区二区 | 欧美亚洲色另类偷自拍 | 欧美黑人又粗又大又爽免费 | 日本一区二区三区视频在线观看 | 国产真实自在自线免费精品 | 国语对白露脸 | 日韩欧美三级理论在线观看 | 色男人在线电影视频网站 | 欧美影院一区二区三区 | 国产偷国产偷亚 | 在线a亚洲视频播 | 精品国产一区二区三区国产 | 九九热在线观看官网 | 精品午夜福利在线视在亚洲 | 黑人巨大精品欧 | 极品尤物一区二区三区 | 欧美亚洲校园第一页 |