2011-11-24 76 views
0

我想知道如何通過PHP REGEX識別URL中的Nofollow關係。我如何識別關係= NoFOLLOW鏈接

<a href="abc.html" rel="NOFOLLOW">How to check NOFOLLOW<a> 

請給我解決這個findout事情

+0

預計HTML會像你的例子那樣變形嗎? – alex

回答

1

你可以用一些諸如嘗試...

preg_match('/<a.+?rel="nofollow".*?>[\s\S]*?<\/a>/i', $html); 

CodePad

但是你最好使用HTML解析器,它處理正則表達式不能處理的事情。

$dom = new DOMDocument; 

$dom->loadHTML($html); 

$anchors = $dom->getElementsByTagName('a'); 

foreach($anchors as $anchor) { 
    if ($anchor->hasAttribute('rel')) { 
     $rel = preg_split('/\s+/', strtolower($anchor->getAttribute('rel'))); 

     if (in_array('nofollow', $rel)) { 
     echo 'This anchor is "nofollow"\'d.'; 
     } 
    } 
} 

CodePad