$p='/<li>(.*?)<\/li>\s*<li>(.*?)<\/li>/i'; 只输出了第一个

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

GNEZ

2015-11-11 23:27

请问这里 \s*是什么意思? 又为什么只输出了第一个?

写回答 关注

3回答

  • qq_紫梓_0
    2016-02-16 14:41:20

    第一个原因你的正则写错了,应该是‘'/<li>(.*?)<\/li>/i’,第二个原因是你用的preg_match而不是preg_match_all

  • 生来爆炸
    2015-11-17 21:43:32

    这个正则里的  \s 应该是想匹配换行符。毕竟一般情况下列表  <li> </li>后面会处理的也只有换行了吧。。至于你说的 只输出了第一个。。不明白什么意思,是preg_replace函数吗?

  • 韧还
    2015-11-12 09:21:41

    \s*是\s和*的结合,\s是匹配一个不可见原子,*是任意个;所以\s*就是匹配任意个不可见原子。我的理解是在这里匹配了一个<li></li>标签后,想匹配下一个

    具体原因,你应该把要匹配的文本也一并给出。

PHP进阶篇

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

182008 学习 · 2668 问题

查看课程

相似问题