假设我有一个有效的 htmlfile,我将它保存到一个字符串中。现在我想提取锚元素(hrefs)的链接。因此我想使用纯正则表达式。
preg_match_all('/<a [^>]*href="(.+)">/', $html, $match);
通常我想收到这样的字符串:
http://www.thisIsAHrefLinkIWantToHave.de
但相反,我还收到以下字符串,由正则表达式中的 (.+) 逻辑引起:
index?a=f">Link</a> <a href="index?a=ds">Link 2</a> <a href="index?b=b">Link 3</a> <a href="index?gf=d">Link 4</a> <a href="index?ttt=q">Link 5</a> <a href="index?g=my">Link 6</a> <a href="http://mysite.org
我找到了 Xpath 或 DOMDocument 之类的解决方案( PHP String Manipulation: Extract hrefs),但我想要没有这些/任何库的解决方案,只需使用正则表达式。我必须做些什么来解决我的正则表达式的问题?
我从第一个“到下一个”想了想。但是如何创建解决问题的那种模式或另一种模式呢?
[编辑:] 解决方案
preg_match_all('/<a [^>]*href="([A-Za-z0-9\/?=:&_.]+)?"/', $html, $match);