這篇文章將為大家詳細(xì)講解有關(guān)PHP中基于perl的正則表達(dá)式處理函數(shù)是什么,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
貴定網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司從2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
常用的正則表達(dá)式處理函數(shù)。
1,preg_match()函數(shù)。
函數(shù)preg_match()執(zhí)行一個(gè)正則表達(dá)式匹配,其定義如下:
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
實(shí)際上就是搜索subject中匹配pattern的部分, 以保存在數(shù)組matches中.請(qǐng)看示例:
.*?<\/b>/'; $string = 'welcome to phpfunsdsadsadas'; if (preg_match($pattern, $string, $arr)) { echo "正則表達(dá)式{$pattern}和字符串{$string}匹配成功
"; print_r($arr); } else { echo "正則表達(dá)式{$pattern}和字符串{$string}匹配失敗"; } ?>
2,preg_match_all()函數(shù)。
函數(shù)preg_match_all()函數(shù)執(zhí)行一個(gè)全局正則表達(dá)式匹配,其定義和preg_match()函數(shù)一致,只不過匹配了全部結(jié)果。請(qǐng)看示例:
.*?<\/b>/'; $string = 'welcome to phpfunsdsadsadas'; if (preg_match_all($pattern, $string, $arr)) { echo "正則表達(dá)式{$pattern}和字符串{$string}匹配成功
"; print_r($arr); } else { echo "正則表達(dá)式{$pattern}和字符串{$string}匹配失敗"; } ?>
依舊是上面的示例(只換了正則處理函數(shù)為preg_match_all()),但是匹配的結(jié)果數(shù)組內(nèi)容不一樣了。
3, preg_replace()函數(shù)
函數(shù)preg_replace()執(zhí)行一個(gè)正則表達(dá)式替換,其定義如下:
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
實(shí)際上就是搜索subject中匹配pattern的部分, 以replacement進(jìn)行替換.其中l(wèi)imit指的是每個(gè)模式在每個(gè)subject上進(jìn)行替換的最大次數(shù). 默認(rèn)是 -1(無限). 如果指定count,將會(huì)被填充為完成的替換次數(shù).
注意:
A,如果subject是一個(gè)數(shù)組, preg_replace()返回一個(gè)數(shù)組, 其他情況下返回一個(gè)字符串.
B,如果匹配被查找到, 替換后的subject被返回, 其他情況下返回沒有改變的subject. 如果發(fā)生錯(cuò)誤, 返回NULL .
C,子模式可以應(yīng)用到參數(shù)replacement中,使用方式為\n或者${n}。(在正則表達(dá)式的模式中我們只能使用\n的形式來獲取已經(jīng)匹配的子模式,切記?。?/p>
D,如果使用模式修正符e,則參數(shù)replacement中可以解析函數(shù)。(在其它的正則表達(dá)式處理函數(shù)中,模式修正符e均被忽略!)
請(qǐng)看下面的綜合示例:
'; echo $count; ?>
上例中,我們使用了模式修正符e,這樣的話strtoupper()函數(shù)就可以當(dāng)作字符串被解析,這就是模式修正符e的作用!而參數(shù)${1}和\2分別是子模式1和子模式2。上例的作用就是將字符串$string中匹配到的子模式php和mysql替換成大寫字母!
4,preg_split()函數(shù)。
preg_split執(zhí)行一個(gè)正則表達(dá)式分隔字符串。其定義如下:
array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )
實(shí)際上就是將subject按照pattern分割,返回分割后的數(shù)組。其中,limit將限制分隔得到的子串最多只有l(wèi)imit個(gè), 返回的最后一個(gè)子串將包含所有剩余部分.limit值為-1, 0或null時(shí)都代表"不限制"。
我們來看一個(gè)示例:
(.*?)<\/p>/'; $string = '這個(gè)字符串中的php
和mysql
被分割了!'; $result = preg_split($pattern, $string, -1, PREG_SPLIT_DELIM_CAPTURE); print_r($result); ?>
上例中,我們使用了常量PREG_SPLIT_DELIM_CAPTURE設(shè) 置返回結(jié)果中包含子模式(如果設(shè)置為PREG_SPLIT_NO_EMPTY,preg_split()將進(jìn)返回分隔后的非空部分。)我們?nèi)绻焉侠姓?則表達(dá)式的括號(hào)去掉,則結(jié)果中不再包含php和mysql這兩個(gè)匹配成功的子模式。
常用的正則表達(dá)式處理函數(shù)我們就介紹完了,本節(jié)的例子可能會(huì)難一些,但希望大家還是認(rèn)真的試驗(yàn)并體會(huì)一下,后面的正則表達(dá)式應(yīng)用部分,我們會(huì)經(jīng)常使用正則表達(dá)式處理函數(shù)。
關(guān)于“PHP中基于perl的正則表達(dá)式處理函數(shù)是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。