如何从此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);
感谢。
答案 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 *匹配/“这不是你想要的,大概是。