麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Regex > 正文

PHP 正則表達式函數庫(兩套)

2020-03-16 21:15:07
字體:
來源:轉載
供稿:網友
正則表達式:用于描述字符排列和匹配模式的一種語法規則。它主要用于字符串的模式分割、匹配、查找及替換操作。
 
 
在PHP中有兩套正則表達式函數庫,兩者功能相似,只是執行效率略有差異: 
一套是由PCRE(Perl Compatible Regular Expression)庫提供的。使用“preg_”為前綴命名的函數; 
一套由POSIX(Portable Operating System Interface of Unix )擴展提供的(PHP默認)。使用以“ereg_”為前綴命名的函數; 
PHP中,正則表達式有三個作用: 
匹配,也常常用于從字符串中析取信息。 
用新文本代替匹配文本。 
將一個字符串拆分為一組更小的信息塊。 

一個正則表達式中至少包含一個原子。 
原子(普通字符,如英文字符) 
元字符(有特殊功用的字符) 
模式修正字符(對正則表達式語義的修正) 

原子(Atom) 
單個字符、數字,如a~z,A~Z,0~9。 
模式單元,如(ABC)可以理解為由多個原子組成的大的原子。 
原子表,如 [ABC]。 
重新使用的模式單元,如://1 
普通轉義字符,如:/d, /D, /w 
轉義元字符,如:/*,/. 

POSIX正則表達式 
POSIX正則表達式全稱為Portable Operating System Interface of Unix,意為UNIX可移植操作系實現接口。 

構造POSIX正則表達式的方法和創建數學表達式的方法一樣,也就是用多種元字符與操作符將小的表達式結合在一起來創建更大的表達式。 

元字符(Meta-character) 
元字符是用于構造規則表達式的具有特殊含義的字符。如果要在正則表達式中包含元字符本身,必須在其前加上”/”進行轉義 
元字符 說明 
* 0次、1次或多次匹配其前的原子 
+ 1次或多次匹配其前的原子 
? 0次或1次匹配其前的原子 
| 匹配兩個或多個選擇 列如 [1-9]|[a-b]|[A-Z] 與其中任何匹配為ture 
^ 匹配字符串串首的原子 例如 abscd===^afdgfgf 相匹配 
$ 匹配字符串串尾的原子 例如 dasdsv===v$ 
[] 匹配方括號中的任一原子 例如 s===[dsadas] 
[^] 匹配除方括號中的原子外的任何字符 例如 aaaaa===[dddd] 
{m} 表示其前原子恰好出現m次 
{m,n} 表示其前原子至少出現m次,至少出現n次(n>m) 
{m,} 表示其前原子出現不少于m次 
() 整體表示一個原子 
. 匹配除換行之外的任何一個字符 

^ $ 這兩個原字符在一起稱為定界 
abd===^abc$ 只有這樣才匹配 

模式匹配的順序 
順序 元字符 說明 
1 () 模式單元 
2 ?* +{} 重復匹配 
3 ^$ 邊界限制 
4 | 模式選擇 

POSIX正則表達式函數 
ereg()和eregi() 
ereg_replace()和eregi_replace() 
split()和spliti() 

ereg()和eregi()ereg()字符串匹配函數,eregi()是ereg()函數的忽略大小的版本 
語法格式:if (!ereg('^[^./][^/]*$', $userfile))//不匹配格式輸出die 

die('這是一個非法的文件名!'); 


ereg_replace()和eregi_replace(忽略大小寫)替換 
string eregi_replace (“正則表達式”,“目標替換字符”,“替換目標”) 
語法格式:$string = "This is a test"; 
echo str_replace(" is", " was", $string); 
echo ereg_replace("( )is", "//1was", $string);//1 為繼承第一個整體 
echo ereg_replace("(( )is)", "//2was", $string);//2繼承第二個整體 

split()和spliti(忽略大小寫)用正則表達式將字符串分割到數組中 
list:給數組中的值賦予一些變量 
語法格式:$date = "04/30/1973"; 
list($month, $day, $year) = split ('[/.-]', $date);//列出三個變數對應格式//以什么形式拆分 拆分誰 
echo "Month: $month; Day: $day; Year: $year<br /> 
"; 
輸出結果Month: 04; Day: 30; Year: 1973 

多行匹配 

$rows = file('php.ini'); //將php.ini文件讀到數組中 

//循環便歷 
foreach($rows as $line) 

if(trim($line)) 

//將匹配成功的參數寫入數組中 
if(eregi("^([a-z0-9_.]*) *=(.*)", $line, $matches)) //循環進行多行匹配 

$options[$matches[1]] = trim($matches[2]); 

unset($matches); 



//輸出參數結果 
print_r($options); 

PCRE正則表達式 
PCRE全稱為Perl Compatible Regular Expression,意思是Perl兼容正則表達式。 
在PCRE中,通常將模式表達式(即正則表達式)包含在兩個反斜線“/”之間,如“/apple/”。 

元字符(Meta-character) 
元字符 說明 
/A 匹配字符串串首的原子 
/Z 匹配字符串串尾的原子 
/b 匹配單詞的邊界 //bis/ 匹配頭為is的字符串 /is/b/ 匹配尾為is的字符串 //bis/b/ 定界 
/B 匹配除單詞邊界之外的任意字符 //Bis/ 匹配單詞“This”中的“is” 

/d 匹配一個數字;等價于[0-9] 
/D 匹配除數字以外任何一個字符;等價于[^0-9] 
/w 匹配一個英文字母、數字或下劃線;等價于[0-9a-zA-Z_] 
/W 匹配除英文字母、數字和下劃線以外任何一個字符;等價于[^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 匹配一個八進制數字 
/xNN 匹配一個十六進制數字 
/cC 匹配一個控制字符 

模式修正符(Pattern Modifiers) 
i -可同時匹配大小寫字母 
M -將字符串視為多行 
S -將字符串視為單行,換行符做普通字符看待,使“.”匹配任何字符 
X -模式中的空白忽略不計 
U -匹配到最近的字符串 
e -將替換的字符串作為表達使用 
格式:/apple/i匹配“apple”或“Apple”等,忽略大小寫。 /i 

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

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

PCRE正則表達式函數 
preg_match()和preg_match_all() 
preg_quote() 
preg_split() 
preg_grep() 
preg_replace() 

preg_match()和preg_match_all()正則表達式的匹配 
語法格式:if (preg_match ("/php/i", "PHP is the web scripting language of choice.")) { 
print "A match was found."; 
} else { 
print "A match was not found."; 


preg_quote()轉義正則表達式字符 
語法格式:$keywords = "$40 for a g3/400"; 
$keywords = preg_quote ($keywords, "/");//轉義誰 /轉義符號 
echo $keywords; 

preg_split()用正則表達式分割字符串 
preg_split()本函數與split函數功能一致。 
語法格式:$keywords = preg_split ("/[/s,]+/", "hypertext language, programming"); 
print_r($keywords); 

preg_grep()返回與模式匹配的數組單元 
語法格式:$fl_array = preg_grep ("/^(/d+)?/./d+$/", $array); 

preg_replace()執行正則表達式的搜索和替換 
語法格式: 
復制代碼代碼如下:

$string = "April 15, 2003"; 
$pattern = "/(/w+) (/d+), (/d+)/i"; 
$replacement = "/${1}1,/$3"; 
print preg_replace($pattern, $replacement, $string); 

preg_match_all()進行全局正則表達式匹配 
語法格式: 
復制代碼代碼如下:

preg_match_all ("|<[^>]+>(.*)</[^>]+>|U", 
"<b>example: </b><div align=left>this is a test</div>", 
$out, PREG_PATTERN_ORDER); 
print $out[0][0].", ".$out[0][1]." 
"; 
print $out[1][0].", ".$out[1][1]." 
"; 

輸出結果:<b>example: </b>, <div align=left>this is a test</div> example: , this is a test

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲91精品 | 国产精品久久久久久婷婷天堂 | 羞羞的视频在线观看 | 欧美日韩高清在线观看 | 国产精品久久久久久238 | 亚洲国产网站 | 亚洲午夜天堂吃瓜在线 | wwwxxx视频 | 亚洲日本欧美 | 亚洲国产一区二区三区 | 亚洲自拍第二页 | 亚洲三区精品 | 国产羞羞视频在线免费观看 | 精品国产一区二区三区在线观看 | 国产成人高潮免费观看精品 | 免费黄色小视频网站 | 男人久久天堂 | 成人短视频在线观看 | 一级黄色av电影 | www.成人精品| 国产做爰全免费的视频黑人 | 国产一区二区免费在线观看视频 | 久久国产精品系列 | 久久国语对白 | 亚洲人成中文字幕在线观看 | 免费黄色欧美视频 | 国产91久久久久久 | 爽爽淫人综合网网站 | 欧美成年性h版影视中文字幕 | 精品三区视频 | 视频一区二区国产 | 日韩视频www | 小视频在线看 | 国产成年人在线观看 | 国产成年人视频 | 黄色毛片一级视频 | 97se亚洲综合在线韩国专区福利 | 亚洲第一页在线观看 | 欧美一级黄视频 | 精品国产三级a | 毛片视频免费观看 |