模式符 | 描述 |
---|---|
s(單行) | 如果設(shè)置了這個(gè)修飾符, 模式中的點(diǎn)號(hào)元字符匹配所有字符, 包含換行符. 如果沒有這個(gè) 修飾符, 點(diǎn)號(hào)不匹配換行符 |
m(多行) | 目標(biāo)字符串是由單行字符組成的(然而實(shí)際上它可能會(huì)包含多行), “行首”元字符(^)僅匹配字符串的開始位置, 而”行末”元字符($)僅匹配字符串末尾。當(dāng)這個(gè)修飾符設(shè)置之后, “行首”和”行末”就會(huì)匹配目標(biāo)字符串中任意換行符(\n)之前或之后 |
通過上面說明,其實(shí)這2個(gè)修飾符都只是,修改正則表達(dá)式常見元字符的匹配范圍了。如果加”s”修飾符,元字符”.” 將能夠匹配換行符(\n),如果加”m”修飾符,元字符”$”,將只匹配到”\n”字符前;元字符”^”,將匹配到”\n”字符后。我們還是舉例說明吧?。ㄏ旅骊P(guān)于正則表達(dá)式?字符,可以看看前面一節(jié):正則表達(dá)式(regex) 貪婪模式、懶惰模式使用)
舉例,看單行應(yīng)用
?php ///讀取hao123.com首頁 ///并且去掉里面script代碼 /** *去掉script標(biāo)簽* * @author chengmo * @copyright http://blog.chacuo.net/ * @param string $content 原字符串 * @param int $style 匹配模式 * @return string */ function remove_script($content,$style=1) { $reg = $style == 1?"%script.*?>.*?/script>%":"%script.*?>.*?/script>%s"; return preg_replace($reg,"",$content); } $content = file_get_contents('http://www.hao123.com'); echo remove_script($content);
舉例,看多行應(yīng)用
?php ///讀取hao123.com首頁 ///讀取meta標(biāo)簽內(nèi)容 /** *讀取meta標(biāo)簽內(nèi)容* * @author chengmo * @copyright http://blog.chacuo.net/ * @param string $content 原字符串 * @param int $style 匹配模式 * @return string */ function read_meta($content,$style=1) { $reg = $style == 1?"%^meta.*?/>%":"%^meta.*?>\s+$%m"; preg_match_all($reg,$content,$arr); return $arr; } $content = file_get_contents('http://www.hao123.com'); var_dump(read_meta($content));
后記:s,m 修飾符只對(duì),幾個(gè)特殊元字符有改變。如果你正則表達(dá)式中沒有那幾個(gè)元字符。開啟s,m字符前后將沒有什么變化的。對(duì)于上面讀取hao123.com代碼,我們可以繼續(xù)同時(shí)使用s,m模式。如:”%script.*?>.*?(^currentProfile.*$).*?/script>%sm” ,匹配所有script標(biāo)簽,并且里面js代碼,有一行以curentProfile開頭字符串。(以下是正則表達(dá)式,單行多行一起使用)
標(biāo)簽:綿陽 咸陽 六安 恩施 梅州 鞍山 池州 三亞
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《正則表達(dá)式單行、多行模式簡(jiǎn)介(使用說明)》,本文關(guān)鍵詞 正則,表達(dá)式,單行,多行,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。