站長資訊網
最全最豐富的資訊網站

PHP正則表達式之怎樣分割字符串與轉義字符串?

在之前的文章中給大家帶來了《PHP中怎樣執行正則表達式的搜索和替換?》,其中詳細的介紹了PHP中執行正則表達式搜索和替換的相關知識,本篇我們繼續來看一下正則表達式中字符串分割和轉義的相關知識,希望對大家有幫助!

PHP正則表達式之怎樣分割字符串與轉義字符串?

之前的文章中我們了解了PHP中執行全局正則表達式的匹配、檢測與給定模式匹配的數組元素、執行一個正則表達式的搜索和替換這樣的操作我們可以通過preg_match() 函數、preg_match_all()函數、preg_grep() 函數和preg_replace() 函數就能夠實現,使用正則表達式的主要目的就是為了通過簡單的辦法來實現強大的功能。

其中對于正則表達式與字符串之間的操作還有很多,其中就包括使用正則表達式分割字符串,那接下來我們就一起來看一下,我們怎樣通過字符表達式來分割字符串。

preg_split() 函數

在PHP中 preg_split() 函數通過一個正則表達式來分割字符串,該函數的語法格式如下:

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

其中需要注意的是:

$pattern表示用于匹配的模式,也即正則表達式;$subject表示要分隔的字符串;$limit是個可選參數,如果指定,就將限制分隔得到的子串最多只有 limit 個,并且最后一個子串將包含所有剩余部分。limit 值為 -10NULL 時都代表“不限制”,建議使用 NULL。

$flags是個可選參數,它有 3 個取值。若設置為 PREG_SPLIT_NO_EMPTY,則 preg_split() 將返回分隔后的非空部分。若設置為 PREG_SPLIT_DELIM_CAPTURE,則分隔的模式中的括號表達式將被捕獲并返回。若設置為 PREG_SPLIT_OFFSET_CAPTURE,則對于每一個出現的匹配返回時會附加字符串偏移量。

這將會改變返回數組中的每一個元素,使每個元素成為一個由第 0 個元素為分隔后的子串、第 1 個元素為該子串在 subject 中的偏移量組成的數組。返回值就是返回一個使用 pattern 分割 subject 字符串后得到的子串組成的數組。

接下來我們通過示例來看一下 preg_split() 函數的用法,示例如下:

<?php     echo "<pre>";     $subject = 'PHP中文網:http://www.php.cn/, baidu百度:http://www.baidu.com/';     $pattern = '/[s,:]+/';     print_r( preg_split($pattern, $subject) );     print_r( preg_split($pattern, $subject, 3) ); ?>

輸出結果:

PHP正則表達式之怎樣分割字符串與轉義字符串?

示例如下:

<?php $str = 'father mother andyou'; var_dump($str); $chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE); var_dump($chars); ?>

輸出結果:

PHP正則表達式之怎樣分割字符串與轉義字符串?

由上述示例能夠看出,通過preg_split() 函數能夠完成通過一個真個表達式來分割字符串。接下來我們來看一下,怎樣對正則表達式來進行轉義。

PHP preg_quote() 函數

普通字符包括沒有顯式指定為元字符的所有可打印和不可打印字符,包括所有大小寫字母、數字、標點符號和一些符號。最簡單的正則表達式是用于搜索字符串相比較的單個普通字符。例如,單字符正則表達式/A/會始終匹配字母 A。

除普通字符之外,正則表達式還可以包含“元字符”。元字符可分為單字符元字符和多字符元字符。例如,元字符d,它與數字字符相匹配。

PHP preg_quote() 函數用來對正則表達式字符串進行轉義,也就是在特殊字符前邊增加一個反斜杠,該函數的語法格式如下:

preg_quote($str [, $delimiter = NULL])

其中需要注意的是:

$str表示正則表達式字符串;$delimiter是個可選參數,額外增加的需要轉義的字符。如果指定了 $delimiter 參數,被指定的字符也會被轉義。這通常用于轉義 PCRE 函數使用的分隔符。 / 是最常見的分隔符。

preg_quote() 函數會向參數 $str 提供的每個正則表達式的字符前增加一個反斜線。這通常用于一些運行時字符串需要作為正則表達式進行匹配的時候。

正則表達式特殊字符有:. + * ? [ ^ ] $ ( ) { } = ! < > | : - 。要清楚/不是正則表達式特殊字符。

接下來我們通過示例來看一下使用 preg_quote() 函數對字符串進行轉義,示例如下:

<?php     $url = 'http://www.baidu.com/';     echo preg_quote($url) . "<br />";     echo preg_quote($url, "/") . "<br />";     $textbody = "baidu百度 is *very* good to study.";     $word     = "*very*";     echo preg_replace( "/".preg_quote($word)."/", "<i>".$word."</i>", $textbody ); ?>

輸出結果:

PHP正則表達式之怎樣分割字符串與轉義字符串?

示例如下:

<?php $keywords = '$40 for a g3/400'; $keywords = preg_quote($keywords, '/'); echo $keywords; // 返回 $40 for a g3/400 ?>

輸出結果:

PHP正則表達式之怎樣分割字符串與轉義字符串?

上述示例中,便是通過preg_quote() 函數用來對正則表達式字符串進行轉義。

大家如果感興趣的話,可以點擊《PHP視頻教程》、《正則表達式手冊》進行

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
亚洲国产成人精品不卡青青草原| 兽交精品99高清毛片| 亚洲中文字幕精品久久| 99re最新地址精品视频| 亚洲av无码国产精品色午夜字幕| 91国在线啪精品一区| 国产高清精品在线| 日韩在线看片免费人成视频播放| 凹凸精品视频分类国产品免费| 精品国产成a人在线观看| 无码精品一区二区三区| 国产日韩精品在线| 精品人妻av区乱码| 亚洲精品美女久久久久| 久久精品a亚洲国产v高清不卡| 久久99国产精品视频| 久久精品视频观看| 国产精品日本一区二区不卡视频| 国产在vr视频精品观看| 二区久久国产乱子伦免费精品| 国产成人精品午夜福麻豆| www国产亚洲精品久久久日本| 精品无码中文视频在线观看| 中文字幕日韩精品一区二区三区 | 亚洲国产成人精品无码区在线网站 | 国产精品嫩草影院一二三区| 一本久久A久久免费精品不卡| 老子午夜精品我不卡影院| 在线日韩麻豆一区| 香蕉99久久国产综合精品宅男自 | 日韩影院在线观看| 日韩精品视频观看| 日韩精品无码人妻免费视频| 亚洲日韩在线视频| 中文字幕一区日韩精品| 日本一区二区三区精品国产| 色精品一区二区三区| www国产亚洲精品久久久| 亚洲精品无码专区2| 亚洲国产精品线在线观看| 国产精品无码a∨精品|