3-6 查找所有匹配结果
本节编程练习不计算学习进度,请电脑登录imooc.com操作

查找所有匹配结果

preg_match只能匹配一次结果,但很多时候我们需要匹配所有的结果,preg_match_all可以循环获取一个列表的匹配结果数组。

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

可以使用preg_match_all匹配一个表格中的数据:

$p = "/<tr><td>(.*?)<\/td>\s*<td>(.*?)<\/td>\s*<\/tr>/i";
$str = "<table> <tr><td>Eric</td><td>25</td></tr> <tr><td>John</td><td>26</td></tr> </table>";
preg_match_all($p, $str, $matches);
print_r($matches);

$matches结果排序为$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配,以此类推。

任务

使用preg_match_all匹配所有li标签中的数据。

  1. <?php
  2. $str = "<ul>
  3. <li>item 1</li>
  4. <li>item 2</li>
  5. </ul>";
  6. //在这里补充代码,实现正则匹配所有li中的数据
  7.  
  8. print_r($matches[1]);
下一节