Php 我想抓取有类链接的href地址

Php 我想抓取有类链接的href地址,php,preg-match-all,Php,Preg Match All,[a href=”http://www.vanchosun.com/m/market_index.php?view=market“]11[/a] [a href=“test.php?view=test&cate=buysell&testid=100”class=“link”]22[/a] 如何使用php preg_match_all抓取具有类链接的href 谢谢。对于这样的工作,最好使用php DOM 看到了吗 在所有方法列表中使用doElement::getAttribute方法 对于这样的

[a href=”http://www.vanchosun.com/m/market_index.php?view=market“]11[/a]


[a href=“test.php?view=test&cate=buysell&testid=100”class=“link”]22[/a]

如何使用php preg_match_all抓取具有类链接的href


谢谢。

对于这样的工作,最好使用php DOM

看到了吗

在所有方法列表中使用
doElement::getAttribute
方法

对于这样的作业,最好使用php DOM

看到了吗

在所有方法列表中使用
doElement::getAttribute
方法

您可以使用以下功能:

$pattern = '~(?(DEFINE)(?<class>\bclass\s*=\s*"[^"]*?\blink\b[^"]*"))
             <a\s+ [^>]*?
             (?| \g<class> [^>]*? \bhref\s*=\s*"([^"]*)"
               | \bhref\s*=\s*"([^"]*)" [^>]*? \g<class>)~xi';
preg_match_all($pattern, $code, $matches, PREG_SET_ORDER);

foreach($matches as $match) {
    echo '<br/>' . $match[1];
}
$pattern='~(?(定义)(?\bclass\s*=\s*“[^”]*?\blink\b[^”]*”)
]*?
(?|\g[^>]*?\bhref\s*=\s*”([^“]*)”
|\bhref\s*=\s*“([^”]*)”[^>]*?\g)~xi';
preg_match_all($pattern,$code,$matches,preg_SET_ORDER);
foreach($matches作为$match进行匹配){
回显“
”。$match[1]; }
然而,peiman F.有一个很好的答案,因为DOM是此类任务的更好选择

DOM方式:

$doc = new DOMDocument();
@$doc->loadHTML($code);
$links = $doc->getElementsByTagName('a');
foreach ($links as $link) {
    if (preg_match('~\blink\b~i', $link->getAttribute('class')))
        echo '<br/>' . $link->getAttribute('href');
}
$doc=newDOMDocument();
@$doc->loadHTML($code);
$links=$doc->getElementsByTagName('a');
foreach($links作为$link){
if(preg_匹配('~\blink\b~i',$link->getAttribute('class'))
回显“
”。$link->getAttribute('href'); }
您可以使用以下功能:

$pattern = '~(?(DEFINE)(?<class>\bclass\s*=\s*"[^"]*?\blink\b[^"]*"))
             <a\s+ [^>]*?
             (?| \g<class> [^>]*? \bhref\s*=\s*"([^"]*)"
               | \bhref\s*=\s*"([^"]*)" [^>]*? \g<class>)~xi';
preg_match_all($pattern, $code, $matches, PREG_SET_ORDER);

foreach($matches as $match) {
    echo '<br/>' . $match[1];
}
$pattern='~(?(定义)(?\bclass\s*=\s*“[^”]*?\blink\b[^”]*”)
]*?
(?|\g[^>]*?\bhref\s*=\s*”([^“]*)”
|\bhref\s*=\s*“([^”]*)”[^>]*?\g)~xi';
preg_match_all($pattern,$code,$matches,preg_SET_ORDER);
foreach($matches作为$match进行匹配){
回显“
”。$match[1]; }
然而,peiman F.有一个很好的答案,因为DOM是此类任务的更好选择

DOM方式:

$doc = new DOMDocument();
@$doc->loadHTML($code);
$links = $doc->getElementsByTagName('a');
foreach ($links as $link) {
    if (preg_match('~\blink\b~i', $link->getAttribute('class')))
        echo '<br/>' . $link->getAttribute('href');
}
$doc=newDOMDocument();
@$doc->loadHTML($code);
$links=$doc->getElementsByTagName('a');
foreach($links作为$link){
if(preg_匹配('~\blink\b~i',$link->getAttribute('class'))
回显“
”。$link->getAttribute('href'); }