假設我有一個有效的htmlfile,我將其保存到一個字符串中。現在我想提取錨元素(hrefs)的鏈接。因此我想使用純正則表達式。如何使用PHP從HTML提取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);
這實際上是我想的正確提示。我添加了一些符號'/ ] * href =「([A-Za-z0-9 \ /?=:&_。] +)?」/'。謝謝! – user2853437