模式修正符是為正則表達式增強和補充的一個功能,使用在正則表達式之外,是這種形式:/正則表達式/U
i: 正則內容在匹配的時候不區分大小寫
<?php
header("content-type: text/html;charset=utf-8");
$mode="/www.bianceng.cn/i"; //i修飾符的意思是不區分大小寫,匹配成功
$string="WWW.BIANCENG.CN";
/*區分大小寫,匹配失敗
$mode="/www.bianceng.cn/";
$string="WWW.BIANCENG.CN";
*/
if(preg_match($mode,$string)){
echo "匹配成功!";
}else{
echo "不匹配!";
}
?>
m: 在匹配首內容或者尾內容時采用多行識別匹配
<?php
header("content-type: text/html;charset=utf-8");
//使用m開啟多行識別匹配,\n前的內容看作一行,匹配成功
$mode="/php$/m";
$string="This is php\n,very good";
/**沒有使用m開啟多行識別匹配
***把$string中的內容看作一個字符串,與末尾匹配,匹配失敗
$mode="/php$/";
$string="This is php\n,very good";
*/
if(preg_match($mode,$string)){
echo "匹配成功!";
}else{
echo "不匹配!";
}
?>
x:忽略正則中的空白
<?php
header("content-type: text/html;charset=utf-8");
//x忽略正則中的空白,匹配成功
$mode="/ph p/x";
$string="php";
$string="This is php\n,very good";
if(preg_match($mode,$string)){
echo "匹配成功!";
}else{
echo "不匹配!";
}
?>
A: 強制從頭開始匹配
<?php
header("content-type: text/html;charset=utf-8");
//A強制從頭匹配,匹配失敗
$mode="/php/A";
$string="This is php";
if(preg_match($mode,$string)){
echo "匹配成功!";
}else{
echo "不匹配!";
}
?>
U: 禁止貪婪匹配,只跟蹤到最近的一個匹配符並結束
貪婪匹配:匹配到最後一個匹配符:
例:
<?php
header("content-type: text/html;charset=utf-8");
//貪婪和分組獲取的案例,ubb
//將[b]php5[/b]換成<strong>php5</strong>
//用括號分組,(.*)就是\1
$mode = '/\[b\](.*)\[\/b\]/';
$replace = '<strong>\1</strong>';
$string = 'This is a [b]php5[/b]. This is a [b]php4[/b]';
echo preg_replace($mode,$replace,$string);
?>
輸出:This is a php5[/b]. This is a [b]php4
使用U禁止貪婪匹配,讓[b]與最近的[/b]匹配:
<?php
header("content-type: text/html;charset=utf-8");
//將[b]php5[/b]換成<strong>php5</strong>
//用括號分3組,(.*)就是\2
$mode = '/(\[b\])(.*)(\[\/b\])/U';
$replace = '<strong>\2</strong>';
$string = 'This is a [b]php5[/b]. This is a [b]php4[/b]';
echo preg_replace($mode,$replace,$string);
?>
輸出:
This is a php5. This is a php4
URL: http://www.bianceng.cn/webkf/PHP/201701/50536.htm