凌哥我看过不少人的外链添加 nofollow 属性代码,写的都不完善,有不少BUG,刚刚自己折腾了一下,测试完成了,也就发了这篇文章。
代码遵循《PHP高效率写法》编写,强迫症没办法,就是追求效率哈哈。
v1.1:优化了一处位置,效率提升
下面来看看我写完的代码:
<?php $html = '需要替换的html代码'; preg_match_all ('/<a(.*?)href="(.*?)"(.*?)>(.*?)<\/a>/',$html,$matchs,PREG_SET_ORDER); $host = 'https://www.9ifuzhu.com/'; $length = strlen ($host); foreach ($matchs as $val) { if (substr($val[2],0,4) == 'http'){ if(substr($val[2],0,$length) != $host){ if (stripos($val[1],'nofollow') === false and stripos($val[3],'nofollow') === false){ $words = array('<a'.$val[1].'href="'.$val[2].'"'.$val[3].'>'.$val[4].'</a>'=>'<a rel="nofollow"'.$val[1].'href="'.$val[2].'"'.$val[3].'>'.$val[4].'</a>'); $html = strtr($html,$words); } } } } echo $html; ?>
解释:完整匹配A标签信息,接着判断 href 开头是否为http字符,如果是的话继续判断是否包含本站首页链接,没有的话就是一个外链了,然后判断A标签中是否已有 nofollow 属性,如果存在则忽略,否则调用 strtr 函数进行文本替换
本站的文章内容中已经用上了,感觉挺不错~
玖爱辅助网原创文章,转载请注明出处