龙空技术网

PHP中如何使用正则表达式抓取链接的内容

好学的小懒猫 150

前言:

此时我们对“phpmatch正则”大概比较关注,咱们都想要剖析一些“phpmatch正则”的相关文章。那么小编同时在网络上网罗了一些关于“phpmatch正则””的相关内容,希望各位老铁们能喜欢,朋友们快快来学习一下吧!

如下图所示,小编通过正则表达式获取了下方所示的源码。那么如何获取a标签中“内容1”和“内容2”的值呢!

<ul>

<li><a href="; target="_blank">内容1</a></li>

<li><a href="; target="_blank">内容2</a></li>

</ul>

解决方法一,通过正则表达式的子模式功能

这里需要了解正则匹配的子模式功能:正则表达式中,可以使用“(”和“)”将模式中的子字符串括起来,以形成一个子模式。将子模式视为一个整体时,那么它就相当于一个单个字符。比如:正则表达式 /<b>(.*)</b>/,可以匹配内容:<b>内容1</b>,其中内容1就是表达式中(.*)对应的内容。(.*)匹配的内容就是这个正则表达式的子组。

$subject = '<a href="; target="_blank">内容2</a>';

$pattern = '/<a[^>]*>(.*)<\/a>/i'; // 这是匹配的正则表达式,“(”和“)”匹配的内容,是子组匹配模式

preg_match_all($pattern, $subject, $matches); // 开始匹配,该函数会把匹配结果放入 $matches数组中,$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配,以此类推。

print_r($matches[1]);

实现方法二:如果不理解正则的子模式,可以使用正则匹配后截取字符的方式

$subject = '<a href="; target="_blank">内容2</a>';

$pattern = '/>.*</i'; // 这是匹配的正则表达式获取包含“>链接内容<”的内容

preg_match_all($pattern, $subject, $matches); //

print_r(substr($matches[0][0],1,7));

当然方法一是更简单方便的!

标签: #phpmatch正则