首頁  >  文章  >  後端開發  >  淺談php 正規的i,m,s,x,e分別表示什麼詳情

淺談php 正規的i,m,s,x,e分別表示什麼詳情

黄舟
黄舟原創
2017-03-04 13:59:203313瀏覽

下面小編就為大家帶來一篇老生常談php 正規則中的i,m,s,x,e分別表示什麼。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧

i          
如果設定此修正符,模式中的字元將同時符合大小寫字母。

m       
#當設定了此修正符,而「行起始」和「行結束」除了符合整個字串開頭和結束外,也分別符合其中的換行符的之後和之前。

s        
#如果設定了此修正符,模式中的圓點元字元(.)符合所有的字符,則包括換行符。沒有此設定的話,則不包括換行符。

x         
如果設定了此修正符,模式中的空白字元除了被轉義的或在字元類別中的以外完全被忽略,在未轉義的字符類之外的#以及下一個換行符之間的所有字符,包括兩頭,也都被忽略。

e         
如果設定了這個修正符,preg_replace() 在替換字串中對反向引用作正常的替換,

?在. + 和* 之後表示非貪婪匹配: *、+和?限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的後面加上一個?就可以實現非貪婪或最小匹配。

例如:

<?php
$string = "上飞机离开我<img border=&#39;0&#39; alt=&#39;&#39; src=&#39;/uploadfile/2009/0921/20090921091612567.jpg&#39; border=&#39;0&#39; />sdfsdf";

$su = preg_match("/ \<[ ]*img.*src[ ]*\=[ ]*[\"|\&#39;](.+?)[\"|\&#39;] /", $string,$match); // 匹配src=的内容
print_r($match[1]); // 输出 /uploadfile/2009/0921/20090921091612567.jpg

$su = preg_match("/ \<[ ]*img.*src[ ]*\=[ ]*[\"|\&#39;](.+)[\"|\&#39;] /", $string,$match);
print_r($match[1]); // 输出 /uploadfile/2009/0921/20090921091612567.jpg&#39; border=&#39;
?>

#範例:(?i):

(?i)在PHP的意思是內部修正符,i指不區分大小寫

其它的修正符還有x,m,s,U等。和我們使用的模式修正符號是一樣的。

差別在於它是在模式內部使用的。僅作用於(?i)所在的子模式內

ccc(a(?i))bcd 匹配 cccabcd和cccAbcd

而a(?i)bc則和abc加上\i修正符是一樣的因為(?i)作用於整個模式

後向引用

#對一個正則表達式模式或部分模式兩邊添加圓括號將導致相關匹配存儲到在一個臨時緩衝區中,所捕獲的每個子匹配都按照在正則表達式模式中從左至右所遇到的內容存儲。儲存子符合的緩衝區編號從 1 開始,連續編號直到最大 99 個子運算式。每個緩衝區都可以使用 '\n' 訪問,其中 n 為一個標識特定緩衝區的一位或兩位十進制數。

可以使用非捕獲元字元 '?:', '?=', or '?!' 來忽略相關匹配的保存。

 以上就是淺談php 正規則中的i,m,s,x,e分別表示什麼詳情的內容,更多相關內容請關注PHP中文網(www.php.cn)!


#
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn