请教个php正则表达式的用法,求高手帮忙
想做个友情链接的检测方法,检测对方网站是不是有我的网站的友情链接,也就是判断是否有我网站的地址;
例如:我的网站的地址是www.csdn.net,
但是有些网站有时候会在链接里面加个rel="nofollow",这样友情链接就没有意义了;
正则没好好学,问下怎么才能检测出是否加了这个呢?
有好几种情况,例如:
HTML code1 2 3 4 5 6 | <!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http:
--><a rel= "nofollow" href= "http://www.csdn.net" >csdn</a>
|
登录后复制
HTML code1 2 3 4 5 6 | <!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http:
--><a target= "_blank" rel= "nofollow" href= "http://www.csdn.net" >csdn</a>
|
登录后复制
登录后复制
HTML code1 2 3 4 5 6 | <!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http:
--><a target= "_blank" rel= "nofollow" href= "http://www.csdn.net" >csdn</a>
|
登录后复制
登录后复制
HTML code1 2 3 4 5 6 | <!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http:
--><a rel= "nofollow" href= "http://www.csdn.net" target= "_blank" >csdn</a>
|
登录后复制
HTML code1 2 3 4 5 6 | <!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http:
--><a href= "http://www.csdn.net" target= "_blank" rel= "nofollow" >csdn</a>
|
登录后复制
以下是我在网上找的别人检测地址的代码:
PHP code1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http:
-->
$out = strtolower (@ file_get_contents (http:
if ( $out ){
$out = str_replace ( "\r\n" , "" , $out );
$out = str_replace ( "\r" , "" , $out );
$out = str_replace ( "\n" , "" , $out );
$havelink =preg_match_all( '/<a>(.*?)/i' , $out , $m );
if ( $havelink || strstr ( $robots , 'nofollow' )){
echo "友情链接存在" ;
}
}
</a>
|
登录后复制
求高手帮忙
------解决方案--------------------
迂回一下,正则我也很弱,找出和自己相关的链接,然后判断是否存在关键代码
PHP code1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $array = csdn
<a target= "_blank" rel= "nofollow" href= "http://www.csdn.net" >csdn</a>
<a target= "_blank" rel= "nofollow" href= "http://www.csdn.net" >csdn</a>
<a rel= "nofollow" href= "http://www.csdn.net" target= "_blank" >csdn</a>
HTML;
preg_match_all( '/(<a.>)/is' , $array , $match );
if (isset( $match [1])) {
foreach ( $match [1] as $html ) {
if ( stripos ( $html , 'rel="nofollow"' ) !== FALSE)
echo 'bad!' ;
break ;
}
} <div class = "clear" >
</div></a.>
|
登录后复制