美好的一天!Get All Anchor Tags
我的正则表达式真的很糟糕,我想请求帮助我的项目。
我有我从其他网站抓取的内容,我想获得所有具有此字符串的锚标签。
target="_blank"
我该如何做到这一点?任何建议将不胜感激。
感谢
美好的一天!Get All Anchor Tags
我的正则表达式真的很糟糕,我想请求帮助我的项目。
我有我从其他网站抓取的内容,我想获得所有具有此字符串的锚标签。
target="_blank"
我该如何做到这一点?任何建议将不胜感激。
感谢
$dom = new DOMDocument();
$dom->loadHtml($yourCobtent);
$xpath = new DOMXpath($dom);
$yourAnchors = $xpath->query('//a[@target="_blank"]');
可能要将'DOMXPath :: query()'的返回值分配给 – Phil 2012-01-12 07:39:52
编辑的内容,谢谢指示 – 2012-01-12 07:41:33
正如在评论中提到的,正则表达式是不是这里的答案。
使用DOM和XPath达到你想要
$doc = new DOMDocument;
$doc->loadHTMLFile('http://www.example.com/some-file.html');
$xpath = new DOMXPath($doc);
$anchors = $xpath->query('//a[@target="_blank"]');
与@quentin同意什么,但是你可以使用regexr,(http://gskinner.com/RegExr/),一个基本的正则表达式所有锚标签是<a.*href=["'](?<url>[^"]+[.\s]*)["'].*>(?<name>[^<]+[.\s]*)</a>
(http://weblogs.asp.net/palermo4/archive/2004/06/18/regex-pattern-for-anchor-tags-part-2.aspx)
[不要试图在任意HTML上使用正则表达式](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags#answer-1732454),你可以在符合特定templ的HTML上摆脱它吃了,但是“从其他网站抓取的内容”并不安全。 – Quentin 2012-01-12 07:24:41
我有适合特定模板的HTML。谢谢你的快速反应。 – acidpaul 2012-01-12 07:30:19