国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php常用正則函數實例小結

2024-05-04 23:54:04
字體:
來源:轉載
供稿:網友

本文實例總結了php常用正則函數。分享給大家供大家參考,具體如下:

1. mixed preg_replace(mixed pattern, mixed  replacement, mixed  subject, [, int limit])

函數功能:用于正則表達式的搜索和替換。

pattern:正則表達式。
replacement:替換的內容。
subject:需要匹配替換的對象。
limit:可選,指定替換的個數,如果省略 limit 或者其值為 -1,則所有的匹配項都會被替換。

補充說明

① replacement 可以包含 //n 形式或 $n 形式的逆向引用,首選使用后者。每個此種引用將被替換為與第 n 個被捕獲的括號內的子模式所匹配的文本。n 可以從 0 到 99,其中 //0 或 $0 指的是被整個模式所匹配的文本。對左圓括號從左到右計數(從 1 開始)以取得子模式的數目。

② 對替換模式在一個逆向引用后面緊接著一個數字時(如 //11),不能使用 // 符號來表示逆向引用。因為這樣將會使 preg_replace() 搞不清楚是想要一個 //1 的逆向引用后面跟著一個數字 1 還是一個 //11 的逆向引用。解決方法是使用 /${1}1。這會形成一個隔離的 $1 逆向引用,而使另一個 1 只是單純的文字。

③ 上述參數除 limit 外都可以是一個數組。如果 pattern 和 replacement 都是數組,將以其鍵名在數組中出現的順序來進行處理,這不一定和索引的數字順序相同。如果使用索引來標識哪個 pattern 將被哪個 replacement 來替換,應該在調用 preg_replace() 之前用 ksort() 函數對數組進行排序。

例子 1 :

<?php$str = "The quick brown fox jumped over the lazy dog.";$str = preg_replace('//s/','-',$str);echo $str;?>

輸出結果為:

The-quick-brown-fox-jumped-over-the-lazy-dog.

例子 2 ,使用數組:

<?php$str = "The quick brown fox jumped over the lazy dog.";$patterns[0] = "/quick/";$patterns[1] = "/brown/";$patterns[2] = "/fox/";$replacements[2] = "bear";$replacements[1] = "black";$replacements[0] = "slow";print preg_replace($patterns, $replacements, $str);/*輸出:The bear black slow jumped over the lazy dog.*/ksort($replacements);print preg_replace($patterns, $replacements, $str);/*輸出:The slow black bear jumped over the lazy dog.*/?>

例子 3 ,使用逆向引用:

<?php$str = '<a href="http://www.baidu.com/">baidu</a>其他字符<a href="http://www.sohu.com/">sohu</a>';$pattern = "/<a/s([/s/S]*?)>([/s/S]*?)<//a>/i";print preg_replace($pattern, '//2', $str);?>

輸出結果為:

baidu其他字符sohu

該例子演示了將文本中所有的 <a></a> 標簽去掉。

2. int preg_match(string $pattern,  string  $subject [,array  &$matches [,  int $flags=0 [ ,int $offset=0]]])

函數功能:搜索subject與pattern給定的正則表達式的一個匹配。

pattern:要搜索的模式,字符串類型。
subject:輸入字符串。
matches:如果提供了參數matches,它將被填充為搜索結果,$matches[0]將包含完整模式匹配到文本,$matches[1]將包含第一捕獲子組匹配到的文本。
flags:可以設置為PREG_OFFSET_CAPTURE,如果傳遞了這個標記,對于每一個出現的匹配返回時會附加字符串偏移量(相對于目標字符串的)。
注意:這會改變填充到matches數組,使其每個元素成為一個由第0個元素是匹配到的字符串,第1個元素是該匹配字符串在目標字符串subject中的偏移量。
offset:通常,搜索從目標字符串的開始,可選參數offset用于指定從目標字符串的某個未知開始搜索(單位是字節)。

3. int preg_match_all(string $pattern, string $subject [, array &$matches [, int $flags=PREG_PATTERN_ORDER [, int $offset=0]]])

函數功能:搜索subject中所有匹配pattern給定正則表達式的匹配結果并且將它們以flag指定順序輸出到matches中。

在第一個匹配找到后,子序列繼續從最后一次匹配位置搜索。

pattern:要搜索的模式,字符串形式。
subject:輸入字符串。
matches:多維數組,作為輸出參數輸出后所有匹配結果,數組排序通過flags指定。
flags:可以結合下面標記使用(注意不能同時使用PREG_PATTERN_ORDER和PREG_SET_ORDER):

PREG_PATTERN_ORDER

結果排序為$matches[0]保存完整模式的所有匹配,$matches[1] 保存第一個子組的所有匹配, 以此類推.

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

以上例程會輸出:

<b>example: </b>, <div align=left>this is a test</div>
example: , this is a test

因此, $out[0]是包含匹配完整模式的字符串的數組,$out[1]是包含閉合標簽內的字符串的數組.

PREG_SET_ORDER

結果排序為$matches[0]包含第一次匹配得到的所有匹配(包含子組),$matches[1]是包含第二次匹配到的所有匹配(包含子組)的數組, 以此類推.

<?phppreg_match_all("|<[^>]+>(.*)</[^>]+>|U",  "<b>example: </b><div align=/"left/">this is a test</div>",  $out, PREG_SET_ORDER);echo $out[0][0] . ", " . $out[0][1] . "/n";echo $out[1][0] . ", " . $out[1][1] . "/n";?>

以上例程會輸出:

<b>example: </b>, example:
<div align="left">this is a test</div>, this is a test

PREG_OFFSET_CAPTURE

如果這個標記被傳遞, 每個發現的匹配返回時會增加它相對目標字符串的偏移量. 注意這會改變matches中的每一個匹配結果字符串元素, 使其 成為一個第0個元素為匹配結果字符串, 第1個元素為 匹配結果字符串在subject中的偏移量.

如果沒有給定排序標記, 假定設置為PREG_PATTERN_ORDER.

offset:通常,查找時從目標字符串的開始位置開始,可選參數offset用于從目標字符串中指定位置開始搜索(單位是字節)。

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 淮南市| 龙海市| 泗洪县| 茌平县| 特克斯县| 古蔺县| 锦屏县| 类乌齐县| 信阳市| 应城市| 峨边| 金堂县| 汉寿县| 三原县| 观塘区| 锡林郭勒盟| 日土县| 和田市| 双牌县| 浪卡子县| 海伦市| 塔城市| 临泉县| 瓮安县| 杨浦区| 长治县| 马关县| 黄浦区| 富裕县| 北碚区| 额尔古纳市| 木兰县| 绥阳县| 客服| 芜湖县| 绵竹市| 滦平县| 蒙自县| 启东市| 错那县| 内丘县|