我需要匹配模式
<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);
答案 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页面时最简单的方法。