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

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • PHP正則處理函數preg_match、preg_match_all、preg_replace和preg_split的實例用法

PHP正則處理函數preg_match、preg_match_all、preg_replace和preg_split的實例用法

發布時間:2021-09-04 12:48:16 來源:億速云 閱讀:181 作者:chen 欄目:開發技術

本篇內容主要講解“PHP正則處理函數preg_match、preg_match_all、preg_replace和preg_split的實例用法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“PHP正則處理函數preg_match、preg_match_all、preg_replace和preg_split的實例用法”吧!



下面我們來看一些常用的正則表達式處理函數。

1,preg_match()函數。

函數preg_match()執行一個正則表達式匹配,其定義如下:

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

實際上就是搜索subject中匹配pattern的部分, 以保存在數組matches中.請看示例:

復制代碼 代碼如下:


<?php
$pattern = '/<b>.*?<\/b>/';
$string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>dsadsadas';
if (preg_match($pattern, $string, $arr)) {
echo "正則表達式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>";
print_r($arr);
} else {
echo "<font color='red'>正則表達式{$pattern}和字符串{$string}匹配失敗</font>";
}
?>



2,preg_match_all()函數。

函數preg_match_all()函數執行一個全局正則表達式匹配,其定義和preg_match()函數一致,只不過匹配了全部結果。請看示例:

復制代碼 代碼如下:


<?php
$pattern = '/<b>.*?<\/b>/';
$string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>dsadsadas';
if (preg_match_all($pattern, $string, $arr)) {
echo "正則表達式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>";
print_r($arr);
} else {
echo "<font color='red'>正則表達式{$pattern}和字符串{$string}匹配失敗</font>";
}
?>


依舊是上面的示例(只換了正則處理函數為preg_match_all()),但是匹配的結果數組內容不一樣了。

3, preg_replace()函數

函數preg_replace()執行一個正則表達式替換,其定義如下:

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

實際上就是搜索subject中匹配pattern的部分, 以replacement進行替換.其中limit指的是每個模式在每個subject上進行替換的最大次數. 默認是 -1(無限). 如果指定count,將會被填充為完成的替換次數.

注意:

A,如果subject是一個數組, preg_replace()返回一個數組, 其他情況下返回一個字符串.

B,如果匹配被查找到, 替換后的subject被返回, 其他情況下返回沒有改變的subject. 如果發生錯誤, 返回NULL .

C,子模式可以應用到參數replacement中,使用方式為\n或者${n}。(在正則表達式的模式中我們只能使用\n的形式來獲取已經匹配的子模式,切記!)

D,如果使用模式修正符e,則參數replacement中可以解析函數。(在其它的正則表達式處理函數中,模式修正符e均被忽略!)

請看下面的綜合示例:

復制代碼 代碼如下:


<?php
$pattern = '/(php)|(mysql)/e';
$string = '這個字符串中的php和mysql被替換成大寫的了!';
$result = preg_replace($pattern, 'strtoupper("${1}\2")', $string, -1, $count);
echo $result.'<br>';
echo $count;
?>


上例中,我們使用了模式修正符e,這樣的話strtoupper()函數就可以當作字符串被解析,這就是模式修正符e的作用!而參數${1}和\2分別是子模式1和子模式2。上例的作用就是將字符串$string中匹配到的子模式php和mysql替換成大寫字母!

4,preg_split()函數。

preg_split執行一個正則表達式分隔字符串。其定義如下:

array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )

實際上就是將subject按照pattern分割,返回分割后的數組。其中,limit將限制分隔得到的子串最多只有limit個, 返回的最后一個子串將包含所有剩余部分.limit值為-1, 0或null時都代表"不限制"。

我們來看一個示例:

復制代碼 代碼如下:


<?php
$pattern = '/<p>(.*?)<\/p>/';
$string = '這個字符串中的<p>php</p>和<p>mysql</p>被分割了!';
$result = preg_split($pattern, $string, -1, PREG_SPLIT_DELIM_CAPTURE);
print_r($result);
?>


上例中,我們使用了常量PREG_SPLIT_DELIM_CAPTURE設 置返回結果中包含子模式(如果設置為PREG_SPLIT_NO_EMPTY,preg_split()將進返回分隔后的非空部分。)我們如果把上例中正 則表達式的括號去掉,則結果中不再包含php和mysql這兩個匹配成功的子模式。

到此,相信大家對“PHP正則處理函數preg_match、preg_match_all、preg_replace和preg_split的實例用法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

php
AI

德令哈市| 陆丰市| 维西| 慈溪市| 屯留县| 宜宾市| 台东市| 石河子市| 德昌县| 远安县| 莱州市| 迁西县| 揭西县| 泗洪县| 贵港市| 东城区| 宁波市| 阜南县| 舟曲县| 普宁市| 酒泉市| 霍林郭勒市| 宁化县| 湖州市| 江都市| 临清市| 南昌市| 大宁县| 象山县| 晋城| 新龙县| 罗山县| 珲春市| 柘城县| 东台市| 芜湖市| 横山县| 金乡县| 玉龙| 始兴县| 称多县|