1

我需要在 html 页面中获取带有特定锚文本的链接的 href。

  </tr>
       <tr>
      <td><a href="/thisisafile.pdf" target="_blank" class="body1">
        This is some anchor text </a></td>
    </tr>
      <tr>

我需要拉出/thisisafile.pdf,我尝试了以下代码:

preg_match('~<a.*href="(.*?)".?>.?This is some anchor text.?</a>~sm',$temp,$matches,0);

$temp 包含上面的代码。

我已经在在线 preg_match 测试器中尝试了正则表达式,它匹配。我已经在没有分隔符的正则表达式测试器中尝试了正则表达式,它可以工作。但是当我在我的服务器(linux)上尝试它时,我得到 0 个匹配项(不是假的)。

4

2 回答 2

1

可能是另一个副本。检查这个问题的第一个答案。正则表达式引擎有时会变得笨拙,尤其是当您使用 .* 贪婪模式时。

获取 A 元素的 href 属性

于 2012-05-17T12:46:45.723 回答
0

你应该改变

~<a.*href="(.*?)".?>.?This is some anchor text.?</a>~sm

进入

~<a.*?href="(.*?)".*?>.*?This is some anchor text.*?</a>~sm

你错过了*. .?表示它只允许一个字符或不允许字符。和文本之前的target="_blank" class="body1"空格因此不允许,导致您的正则表达式失败。

编辑:还.*通过替换它来减少你的第一个贪婪,.*?以防止将来出现问题。

于 2012-05-17T12:45:47.790 回答