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

来源:3-6 查找所有匹配结果

111

2017-04-17 21:37

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

写回答 关注

4回答

  • MrThinco
    2017-07-04 11:18:38

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

  • MrThinco
    2017-07-04 10:58:38

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

  • 慕盖茨9680828
    2017-04-18 10:56:42

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

  • 慕盖茨9680828
    2017-04-18 10:50:41

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

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181835 学习 · 2577 问题

查看课程

相似问题