夜光带你走进 传奇语言php(66)进阶篇开始

使用preg_match_all解析HTML
本文介绍了如何利用PHP中的preg_match_all函数来提取HTML中特定标签的内容,通过具体实例展示了匹配过程及其应用。

夜光序言:

 

不管生活如何变故,道路如何曲折,你千万别掉队,因为希望和梦想就在前面。不管生活如何变故,道路如何曲折,你千万别掉队,因为希望和梦想就在前面。

 

 

 

 

 

 

 

 

 

 

 

正文:

查找所有匹配结果

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标签中的数据。


 


/**
 * Created by PhpStorm.
 * User: 夜光
 * Date: 2019/7/15
 * Time: 19:55
 */

<?php
$str = "<ul>
            <li>item 1</li>
            <li>item 2</li>
        </ul>";
//在这里补充代码,实现正则匹配所有li中的数据
$p = "/<li>(.*)<\/li>/i";
$p = "/<li>(.*)<\/li>/i";//解释下这个正则://后面的i表示不区分大小写,<li>(.*?)<\/li>表示li标签内的匹配的()内的值有多少,括号内的.表示所有单字符,*表示数量为0个或者多个。也就是li标签内有字符就显示出来
preg_match_all($p,$str,$matches);
print_r($matches[1]);

// $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);
// // echo $matches[1];
?>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值