为了账号安全,请及时绑定邮箱和手机立即绑定

为什么只匹配<b></b>里的字符串,而不会匹配<b></b>?

$p = "|<[^>]+>(.*?)</[^>]+>|i";
$str = "<b>example: </b><div align=left>this is a test</div>";
preg_match_all($p, $str, $matches);
print_r($matches);

正在回答

4 回答

http://img1.sycdn.imooc.com//595b08c80001ccf205680433.jpg其实,实际上浏览器中没显示html标签,但是实际上$matches[0]中确实是匹配到了标签的,并且存了数组中,是指html标签被浏览器解析掉了,所以没有显示。

4 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//595b040e0001002407470479.jpg看打印出来的数据可以知道,其实无论是选择$matches[0]还是$matches[1]都不会得到标签<li></li>,实践是检验真理的唯一标准,希望可以帮到你,兄弟

1 回复 有任何疑惑可以回复我~

$p = "/<b>(.*?)<\/b>/i"; 拿我写的这个举例子   你获取到的有b标签的会被存放在$matches[0]中,因为$matches[0]种存放的是匹配完整表达式的结果,$matches[1]存放的只是(.*?)匹配的结果,没有包含前边后边的标签

2 回复 有任何疑惑可以回复我~

$p = "/<b>(.*?)<\/b>/i";

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么只匹配<b></b>里的字符串,而不会匹配<b></b>?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信