中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用PHP中全局正則表達式匹配及匹配數組元素

發布時間:2021-11-01 11:35:05 來源:億速云 閱讀:374 作者:iii 欄目:編程語言

這篇文章主要介紹“怎么使用PHP中全局正則表達式匹配及匹配數組元素”,在日常操作中,相信很多人在怎么使用PHP中全局正則表達式匹配及匹配數組元素問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用PHP中全局正則表達式匹配及匹配數組元素”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

怎么使用PHP中全局正則表達式匹配及匹配數組元素

preg_match_all()函數

之前我們只介紹了preg_match() 函數這一種基礎函數,在 PHP 中還有一個和 preg_match() 函數極為類似的函數——preg_match_all(),該函數可以搜索字符串中所有可以和正則表達式匹配的結果。

該函數的語法格式如下:

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

其中需要注意的是:

$pattern表示要搜索的模式,也就是定義好的正則表達式;$subject表示要搜索的字符串;$matches表示可選參數是個多維數組,用來存放所有匹配的結果, 數組排序通過 $flags 指定;$offset表示可選參數,$offset 用于從目標字符串中指定位置開始搜索,它的單位是字節。

$flags表示可選參數,其中它可以結合下面幾個標記使用,

  • PREG_PATTERN_ORDER

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

  • PREG_SET_ORDER

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

  • PREG_OFFSET_CAPTURE

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

其中不能同時使用 PREG_PATTERN_ORDER PREG_SET_ORDER,preg_match_all() 函數可以返回 $pattern 的匹配次數(可能是 0),如果發生錯誤則返回 FALSE

接下來我們通過示例來看一下preg_match_all() 函數的應用,匹配一個字符串,示例如下:

<?php
    $subject = "abcdefghijkdefabcedfdefxyzdef";
    $pattern_1 = '/(def)(abc)/';
    $num_1 = preg_match_all($pattern_1, $subject, $matches_1,PREG_PATTERN_ORDER);
    echo "<pre>";
    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);
?>

輸出結果:

怎么使用PHP中全局正則表達式匹配及匹配數組元素

由上述示例中,我們便完成了通過preg_match_all() 函數來匹配一個字符串。通過preg_match_all() 函數的應用,可以完成全局正則表達式匹配。

那接下來那我們看一下怎樣完成檢測與給定模式匹配的數組元素。這時候就要用到preg_grep() 函數了。

preg_grep() 函數

使用正則表達式除了可以匹配字符串外,還可以匹配數組中的元素。PHP 中的 preg_grep() 函數可以搜索數組中的所有元素,并返回與正則表達式匹配的所有元素所組成的數組。該函數的語法格式如下:

preg_grep($pattern, $input [, $flags = 0 ])

其中需要注意的是:

$pattern表示要搜索的模式,也就是定義好的正則表達式;$input表示要搜索的數組;$flags表示可選參數,可以設置為 PREG_GREP_INVERT,這時函數會返回數組中與給定模式 $pattern 不匹配的元素組成的數組。perg_grep() 函數將遍歷 $input 數組中的每一個元素,讓該元素與模式 $pattern 進行匹配,然后將匹配成功或者匹配失敗的元素返回。

接下來,我們通過示例來看一下使用 perg_grep() 函數匹配數組中的元素,示例如下:

<?php
    $test_arr = array(
        '億速云',
        'http://www.5655pk.com/',
        'php教程',
        'abcdefg'
    );
    $preg = '/^[a-z]/';
    $preg_arr_1 = preg_grep($preg, $test_arr);
    $preg_arr_2 = preg_grep($preg, $test_arr, PREG_GREP_INVERT);
    echo '<pre>';
    var_dump($preg_arr_1);
    var_dump($preg_arr_2);
?>

輸出結果:

怎么使用PHP中全局正則表達式匹配及匹配數組元素

上述示例便是通過preg_grep() 函數匹配數組中的元素。

到此,關于“怎么使用PHP中全局正則表達式匹配及匹配數組元素”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

毕节市| 航空| 饶河县| 图片| 镇远县| 沂源县| 会宁县| 兴城市| 鄂温| 临沂市| 调兵山市| 石河子市| 阜新| 寻乌县| 农安县| 怀来县| 奉新县| 墨脱县| 方山县| 合肥市| 玉溪市| 巧家县| 大竹县| 石泉县| 西宁市| 班玛县| 贡嘎县| 历史| 布尔津县| 康乐县| 镇坪县| 辰溪县| 唐河县| 抚松县| 镇原县| 罗平县| 靖安县| 武安市| 兴义市| 呼玛县| 兴文县|