課程
/后端開發
/PHP
/PHP進階篇
$p = "|<[^>]+>(.*?)</[^>]+>|i";這個表達式如何理解?
2016-12-11
源自:PHP進階篇 3-6
正在回答
$p = "|<[^>]+>(.*?)<[^>]+>|i";背景:.*?表示最小匹配所有字符(拒絕貪婪匹配)分析:首先,<[^>]+>對應<li>,在方括號內部的^表示除了方括號內的原子以外的字符,即[^>]表示除了>以外的任意一個字符,+表示一個或者多個字符。后面的</[^>]+>也是同理,只不過在前面多添加了一個/反斜杠。最后,在此規則串中,分界符為||而不是//。因此,對于其中的</li>里面的/可以不使用轉義字符,直接使用/。
初學,有錯誤請見諒~
Allengd
尖括號開始把我也忽悠住了,看了別人的回復才明白了。.*?匹配除換行符以外的0次或1次,懶惰模式
<是左尖括號,[^>]指除了右尖括號以外的任何字符,+指匹配一次或多次,>指右尖括號,(.*?)是一種懶惰匹配模式,匹配任何可見字符,</[^>]+>同理,i指忽略大小寫
開頭和結尾的|應該和/一樣吧 因為html標簽里面有/所以用|不用轉義嗎?? <匹配<, [^>]+匹配不是>的字符在[]里面^代表不是后面的字符額+表示匹配多次,>匹配>;(.*?)表示組 .匹配除換行符 \n 之外的任何單字符,*?代表非貪婪模式;后面的還開頭的一個差不多匹配</xxxx>;i代表不區分大小寫
舉報
輕松學習PHP中級課程,進行全面了解,用PHP快速開發網站程序
2 回答$p = "|<[^>]+>(.*?)</[^>]+>|i"
2 回答$p = "|<[^>]+>(.*?)</[^>]+>|i";
4 回答'/bbc/i',這里直接用'/$p/i'可以嗎?
5 回答一定要寫/bbc/i才能匹配嗎?可以把/bbc/代換成$p嗎
2 回答$p = 'http://'; $p = '/'.preg_quote($p, '/').'/'; echo $p;這三行代碼是什么意思
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-04-11
$p = "|<[^>]+>(.*?)<[^>]+>|i";
背景:.*?表示最小匹配所有字符(拒絕貪婪匹配)
分析:
首先,<[^>]+>對應<li>,在方括號內部的^表示除了方括號內的原子以外的字符,即[^>]表示除了>以外的任意一個字符,+表示一個或者多個字符。
后面的</[^>]+>也是同理,只不過在前面多添加了一個/反斜杠。
最后,在此規則串中,分界符為||而不是//。因此,對于其中的</li>里面的/可以不使用轉義字符,直接使用/。
初學,有錯誤請見諒~
2017-03-14
尖括號開始把我也忽悠住了,看了別人的回復才明白了。.*?匹配除換行符以外的0次或1次,懶惰模式
2017-03-14
<是左尖括號,[^>]指除了右尖括號以外的任何字符,+指匹配一次或多次,>指右尖括號,(.*?)是一種懶惰匹配模式,匹配任何可見字符,</[^>]+>同理,i指忽略大小寫
2016-12-12
開頭和結尾的|應該和/一樣吧 因為html標簽里面有/所以用|不用轉義嗎?? <匹配<, [^>]+匹配不是>的字符在[]里面^代表不是后面的字符額+表示匹配多次,>匹配>;(.*?)表示組 .匹配除換行符 \n 之外的任何單字符,*?代表非貪婪模式;后面的還開頭的一個差不多匹配</xxxx>;i代表不區分大小寫