PHP正則表達(dá)式核心技術(shù)完全詳解 第10節(jié) [補(bǔ)充知識(shí)] 模式修正符 s和m

極客小俊
?一個(gè)專(zhuān)注于web技術(shù)的80后
你不用拼過(guò)聰明人,你只需要拼過(guò)那些懶人 你就一定會(huì)超越大部分人!

[補(bǔ)充知識(shí)] 模式修正符 s和m
m 將字符串視為多行
多行的意思就是把有\(zhòng)n的字符串看做是另起一行,再來(lái)匹配正則
簡(jiǎn)單的說(shuō)就是把一個(gè)雙引號(hào)的字符串,把它以\n為基礎(chǔ)分割成的獨(dú)立行
匹配每一行\(zhòng)n換行符之前的內(nèi)容 小結(jié): m修正符的意思就是用來(lái)修正^ 和 的作用因?yàn)楸旧砗褪瞧ヅ湔麄€(gè)一大段字符串, 而m就是把一大段字符串拆分成每一行來(lái)進(jìn)行匹配, 匹配每一行換行符之前的內(nèi)容 注意: 字符串如果是單引號(hào)是對(duì)\n無(wú)效的,字符串必須是雙引號(hào)才能解析里面的\n 代碼如下案例:
?$string="h11111\nh22222\nh33333";
?$pattern='/^h\d+$/im';
?preg_match_all($pattern, $string,$result);
?show($result);
s 將字符串視為單行,換行符會(huì)作為普通字符 s如果設(shè)置了這個(gè)修飾符,模式中的(點(diǎn)號(hào))元字符匹配所有字符,包含換行符。如果沒(méi)有這個(gè)修飾符,點(diǎn)號(hào)不匹配換行符。這個(gè)修飾符等同于 perl 中的/s修飾符。 一個(gè)取反字符類(lèi)比如 a 總是匹配換行符,而不依賴(lài)于這個(gè)修飾符的設(shè)置。 代碼案例如下

?//對(duì)比1
?$string="an this is eve
?an tzone good
?an good";
?
?$pattern='/^(an)/m';
?
?
?preg_match_all($pattern, $string,$arr);
?show($arr);
?
?
?//對(duì)比2
?$string="an this is eve
?an tzone good
?an good";
?
?$pattern='/^(an).+/s';
?
?
?preg_match_all($pattern, $string,$arr2);
?show($arr2);
?
?
?//對(duì)比3
?$string="an this is eve
?an tzone good
?an good";
?
?$pattern='/^(an).+/m';
?
?
?preg_match_all($pattern, $string,$arr3);
?show($arr3);
?

