我怎样才能匹配模式如下

时间:2011-06-13 17:06:07

标签: php regex

我需要匹配模式

<a class="item-link" href="NEED TO GET THIS PART">AND THIS PART</a>

我尝试了所有三种正则表达式模式,但似乎没有人帮助我。

preg_match_all("/<a.*(?:[^class=\"item-link\"=]*)class=\"item-link\"(?:[^href=]*)href=(?:'|\")?(.*)(?:'|\")(?:[^>]*)>(.*)<\/a>/", $content, $tablecontent);
preg_match_all("|/<a (?:[^href=]*)href=(?:'|\")?(.*)(?:'|\")(?:[^>]*)>(.*)<\/a>/|s", $content, $tablecontent); 
preg_match_all("|/<a.+class=\"item-link\".+href=\"(.*)\"[^>]*>\.+<\/a[^>]*>/|m", $content, $tablecontent);
print_r($tablecontent);

2 个答案:

答案 0 :(得分:1)

试试这个:

preg_match('/<a class="item-link" href="([^"]+)">([^<]+)<\/a>/', $content, $matches);

答案 1 :(得分:1)

这是执行此操作的正确方法:

$html = '<a class="item-link" href="NEED TO GET THIS PART">AND THIS PART</a>';

$dom = new DOMDocument();
$dom->loadHTML($html);

$xp = new XPath($dom);

$results = $xp->query('//a[class="item-link"]');

foreach ($results as $link) {
   $href = $link->getAttribute('href');
   $text = $link->nodeValue;

   ... do your stuff here ...
}

对于单个链接来说是过度杀伤,但到目前为止,这是处理完整HTML页面时最简单的方法。