PHP正则表达式:匹配联系我们链接



我不知道为什么这不是匹配。但是让我们假设有一个完整的html页面,我想要联系我们的链接,不管链接中的文本是"联系我们","联系我们","联系"等。

示例html:

<a href="contact.html">
    Contact Us
</a>

这是我试图使用的preg_match,尽管它不匹配任何东西:

preg_match('/<a.*href="(.*)".*>.*contact.*</a>/is',$data,$matches);

Matches只是一个空数组

这是因为。不匹配新行。将多行修饰符(m)添加到正则表达式中,它应该可以工作。

preg_match('/<a.*href="(.*)".*>.*contact.*</a>/ism',$data,$matches);

这是一个严格的正则表达式,以确保您只匹配有效的<a href="#"></a>标记。

 $content = '<a href="contact.html">Contact Us</a>';
 $regexp = "/<as[^>]*href=(["']??)([^" >]*?)\1[^>]*>(.*)contact(.*)</a>/siU";
 preg_match_all($regexp, $content, $match, PREG_SET_ORDER);

如果您想抓取HTML页面,但不需要编写很长的正则表达式,然后测试它们。试试PHPQuery库吧。它允许你使用CSS样式选择器从HTML中提取数据。

编辑:

如何使用PHPQuery做同样的事情。

 phpQuery::newDocument('<a href="contact.html">Contact Us</a>');
 $links = pq('a:contains("Contact")');

最新更新