2013-11-21 2 views
0

[A HREF = "http://www.vanchosun.com/m/market_index.php?view=market"] 11 [/ а]Я хочу, чтобы захватить HREF адрес, который имеет класс ссылку


[класс A HREF = "test.php? вид = тест & Cate = BuySell & TestID = 100" = "ссылка"] 22 [/ а]

Как захватить HREF, который имеет класс ссылку с помощью PHP preg_match_all

Спасибо.

+2

Что вы пробовали? –

ответ

2

Вы можете использовать это:

$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]; 
} 

Однако пейман Ф. имеет хороший ответ, поскольку 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'); 
} 
Смежные вопросы