2011-11-24 89 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