preg_match和preg_match_all()

preg_match — 執行匹配正則表達式

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

參數 是否必須 說明
pattern 要搜索的模式
subject 輸入字符串
matches $matches[0]將包含完整模式匹配到的文本, $matches[1] 將包含第一個捕獲子組匹配到的文本,以此類推。
flags 如果傳遞PREG_OFFSET_CAPTURE,對於每一個出現的匹配返回時會附加字符串偏移量(相對於目標字符串的)。
offset 通常,搜索從目標字符串的開始位置開始。可選參數 offset 用於 指定從目標字符串的某個位置開始搜索(單位是字節)。

返回值:返回 pattern 的匹配次數,如果發生錯誤preg_match()返回 FALSE

<?php
$str = 'abcdabccd';
preg_match('/(ab)(c+)/', $str, $matches);
preg_match('/(ab)(c+)/', $str, $matches2,PREG_OFFSET_CAPTURE);
preg_match('/(ab)(c+)/', $str, $matches3,PREG_OFFSET_CAPTURE,1);
var_dump($matches);
var_dump($matches2);
var_dump($matches3);

preg_match_all — 執行一個全局正則表達式匹配 

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

參數 是否必須 說明
pattern 要搜索的模式,字符串形式。
subject 輸入字符串。
matches 多維數組,作爲輸出參數輸出所有匹配結果, 數組排序通過flags指定。
flags

(1)PREG_PATTERN_ORDER:結果排序爲$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一個子組的所有匹配,以此類推。

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

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

offset 用於 從目標字符串中指定位置開始搜索(單位是字節)。

返回值:返回完整匹配次數(可能是0),或者如果發生錯誤返回FALSE

<?php
$str = 'abcdabccd';
preg_match_all('/(ab)(c+)/', $str, $matches);
preg_match_all('/(ab)(c+)/', $str, $matches2,PREG_SET_ORDER);
preg_match_all('/(ab)(c+)/', $str, $matches3,PREG_OFFSET_CAPTURE);
var_dump($matches);
var_dump($matches2);
var_dump($matches3);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章