在 href PHP 中选择链接


Selecting link inside href PHP

如何从这个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);   

谢谢。

你可以通过环顾四周来解决这个问题:

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

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

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

网址将出现在$regs[1]中。

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

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

更具体地注意,/''S* 匹配/",这可能不是您想要的。