這篇文章主要介紹“怎么使用PHP中全局正則表達式匹配及匹配數(shù)組元素”,在日常操作中,相信很多人在怎么使用PHP中全局正則表達式匹配及匹配數(shù)組元素問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用PHP中全局正則表達式匹配及匹配數(shù)組元素”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
站在用戶的角度思考問題,與客戶深入溝通,找到鹽城網(wǎng)站設(shè)計與鹽城網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、主機域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋鹽城地區(qū)。
preg_match_all()
函數(shù)
之前我們只介紹了preg_match()
函數(shù)這一種基礎(chǔ)函數(shù),在 PHP 中還有一個和 preg_match()
函數(shù)極為類似的函數(shù)——preg_match_all()
,該函數(shù)可以搜索字符串中所有可以和正則表達式匹配的結(jié)果。
該函數(shù)的語法格式如下:
preg_match_all($pattern, $subject [, &$matches [, $flags = PREG_PATTERN_ORDER [, $offset = 0 ]]])
其中需要注意的是:
$pattern
表示要搜索的模式,也就是定義好的正則表達式;$subject
表示要搜索的字符串;$matches
表示可選參數(shù)是個多維數(shù)組,用來存放所有匹配的結(jié)果, 數(shù)組排序通過 $flags
指定;$offset
表示可選參數(shù),$offset
用于從目標字符串中指定位置開始搜索,它的單位是字節(jié)。
$flags表示可選參數(shù),其中它可以結(jié)合下面幾個標記使用,
PREG_PATTERN_ORDER
結(jié)果排序為 $matches[0] 保存完整模式的所有匹配,$matches[1] 保存第一個子組的所有匹配,以此類推。
PREG_SET_ORDER
結(jié)果排序為 $matches[0] 包含第一次匹配得到的所有匹配(包含子組), $matches[1] 是包含第二次匹配到的所有匹配(包含子組)的數(shù)組,以此類推。
PREG_OFFSET_CAPTURE
如果這個標記被傳遞,每個發(fā)現(xiàn)的匹配返回時會增加它相對目標字符串的偏移量。注意這會改變 $matches
中的每一個匹配結(jié)果字符串元素,使其成為一個第 0 個元素為匹配結(jié)果字符串,第 1 個元素為匹配結(jié)果字符串在 subject 中的偏移量。
其中不能同時使用 PREG_PATTERN_ORDER
和 PREG_SET_ORDER
,preg_match_all() 函數(shù)可以返回 $pattern 的匹配次數(shù)(可能是 0),如果發(fā)生錯誤則返回 FALSE
。
接下來我們通過示例來看一下preg_match_all() 函數(shù)的應(yīng)用,匹配一個字符串,示例如下:
"; var_dump($matches_1); var_dump($num_1); $pattern_2 = '/(def)(abc)/'; $num_2 = preg_match_all($pattern_2, $subject, $matches_2,PREG_OFFSET_CAPTURE, 3); var_dump($matches_2); var_dump($num_2); ?>
輸出結(jié)果:
由上述示例中,我們便完成了通過preg_match_all() 函數(shù)來匹配一個字符串。通過preg_match_all() 函數(shù)的應(yīng)用,可以完成全局正則表達式匹配。
那接下來那我們看一下怎樣完成檢測與給定模式匹配的數(shù)組元素。這時候就要用到preg_grep() 函數(shù)了。
preg_grep()
函數(shù)
使用正則表達式除了可以匹配字符串外,還可以匹配數(shù)組中的元素。PHP 中的 preg_grep() 函數(shù)可以搜索數(shù)組中的所有元素,并返回與正則表達式匹配的所有元素所組成的數(shù)組。該函數(shù)的語法格式如下:
preg_grep($pattern, $input [, $flags = 0 ])
其中需要注意的是:
$pattern
表示要搜索的模式,也就是定義好的正則表達式;$input
表示要搜索的數(shù)組;$flags
表示可選參數(shù),可以設(shè)置為 PREG_GREP_INVERT
,這時函數(shù)會返回數(shù)組中與給定模式 $pattern
不匹配的元素組成的數(shù)組。perg_grep() 函數(shù)將遍歷 $input 數(shù)組中的每一個元素,讓該元素與模式 $pattern 進行匹配,然后將匹配成功或者匹配失敗的元素返回。
接下來,我們通過示例來看一下使用 perg_grep() 函數(shù)匹配數(shù)組中的元素,示例如下:
'; var_dump($preg_arr_1); var_dump($preg_arr_2); ?>
輸出結(jié)果:
上述示例便是通過preg_grep() 函數(shù)匹配數(shù)組中的元素。
到此,關(guān)于“怎么使用PHP中全局正則表達式匹配及匹配數(shù)組元素”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
新聞名稱:怎么使用PHP中全局正則表達式匹配及匹配數(shù)組元素
當前鏈接:http://weahome.cn/article/pdgdjh.html