PHP 正则匹配A标签获得连接和文字
<FONTSIZE=2><ahref=/ztg/51678.nsf/0/8DEAD765CF54DA1948257FD4003A9618/$file/公示.xls><im...
<FONT SIZE=2><a href=/ztg/51678.nsf/0/8DEAD765CF54DA1948257FD4003A9618/$file/公示.xls><img src=http://10.1.5.25:180/icons/vwicn005.gif border=0>文件1</a>
数据如上,匹配数据中所有的A标签得到全部的文字和连接,如“文件1”,“/ztg/51678.nsf/0/8DEAD765CF54DA1948257FD4003A9618/$file/公示.xls” 展开
数据如上,匹配数据中所有的A标签得到全部的文字和连接,如“文件1”,“/ztg/51678.nsf/0/8DEAD765CF54DA1948257FD4003A9618/$file/公示.xls” 展开
1个回答
展开全部
<a\b[^>]*\bhref=([^\s>]+)[^>]*>[\s\S]*?([^<>]*)</a>
解释:
<a\b #匹配a标签的开始
[^>]* #匹配a标签href属性前的其他属性
\bhref=([^\s>]+) #匹配href属性,并将匹配到的内容捕获到分组1当中
[^>]*> #匹配a标签的结束
[\s\S]*? #匹配a标签文本前的img标签
([^<>]*) #匹配a标签文本并捕获到分组2当中
</a> #匹配a标签的关闭
分组1和分组2即为所需内容
简化版:
<a\s*href=([^>]+)><img[^>]+>([^>]+)</a>
实际上简化版可能效率更高……因为严格按照原文本格式来匹配。
不过如果标签形式有一点变化就可能导致匹配失败,所以这里写了两个版本。。
解释:
<a\b #匹配a标签的开始
[^>]* #匹配a标签href属性前的其他属性
\bhref=([^\s>]+) #匹配href属性,并将匹配到的内容捕获到分组1当中
[^>]*> #匹配a标签的结束
[\s\S]*? #匹配a标签文本前的img标签
([^<>]*) #匹配a标签文本并捕获到分组2当中
</a> #匹配a标签的关闭
分组1和分组2即为所需内容
简化版:
<a\s*href=([^>]+)><img[^>]+>([^>]+)</a>
实际上简化版可能效率更高……因为严格按照原文本格式来匹配。
不过如果标签形式有一点变化就可能导致匹配失败,所以这里写了两个版本。。
更多追问追答
追问
preg_match_all(']+)>]+>([^>]+)',$str,$array);
是这样吗,返回为空
追答
php正则两边要加/
preg_match_all('/]+)>]+>([^>]+)/',$str,$array);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询