在href PHP中选择链接

时间:2011-05-19 07:31:20

标签: php regex

如何从此HTML中选择http://test.com/
<a target="_new" href="http://test.com/" title="test">$293.00</a>

我意识到我应该使用DOM解析器,但它只需几行代码,我宁愿使用正则表达式。

我试过这个没有成功:

preg_match('/(http|https)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/', $html, $url);   

感谢。

4 个答案:

答案 0 :(得分:2)

您可以使用 lookarounds 解决此问题:

if (preg_match('/(?<=href=").*?(?=")/', $html, $groups)) {
    $url = $groups[0];
} else {
    $url = "";
}
  • (?<=href=")表示:在href="
  • 之后立即找到一个位置
  • 然后匹配任何内容,但.*?尽可能少 - 这会保存在groups[0]
  • 当您找到下一个字符为"
  • 的位置时停止

答案 1 :(得分:1)

当我不使用DOM解析器时,这意味着我非常确定内容,并最终得到一些非常简单的东西......就像这样......

preg_match('/href="([^"]+)"/', $html, $regs);

url将在$ regs [1]中。

答案 2 :(得分:0)

如果你只是想要href,你所要做的就是preg_match('/href="([^"]*?)/', $html, $matches),然后抓住$matches[1]的内容。

答案 3 :(得分:0)

当然,您的解析器与大量合法网址不匹配。更有用的是,请参阅http://mathiasbynens.be/demo/url-regex

更具体地说,/ \ S *匹配/“这不是你想要的,大概是。