正则表达式来过滤链接

时间:2012-10-30 16:07:03

标签: php regex

我正在使用此正则表达式从网页中过滤.pdffiles:

    $regex='|<a.*?href="(.*pdf?)"|';

如果链接是这样的话,那就完成了工作:

 www.xyz.com/trgrrtr/ghtty.pdf

但如果链接是这样的,则无法过滤:

 www.xyz.com/trgrrtr/ghtty.pdf?code=KksRHhdVXAoECBFCVFpeXBsBUgYMDQpxd3J2d3F2fDtzfnFuLiErNXNpIG5kYm16aGhpcmxoa05QV1VKUVFFUxQ%3D

我应该用什么正则表达式从网页中过滤掉这个链接?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

首先,您需要转义?,否则只会使f前面的$regex = '|<a.*?href="([^"]*\.pdf\?[^"]*)"|'; 成为可选项。然后你可以做这样的事情:

.*

使用否定的字符类可确保您不能保留该属性。 ("也可以使用属性结尾",然后继续{{1}}匹配字符串后面的另一个双引号。)

但我真的建议您先使用DOM解析器来查找链接元素。 PHP有一个built-in one,并且有一个非常好用且方便的3rd-party alternative