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

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

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

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

