课程
/后端开发
/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;这三行代码是什么意思