四季云朵 發表於 2023-10-11 00:00:00

织梦CMS利用php正则让文章的外链自动加nofollow

<p>
        “nofollow” 标签是Google、Yahoo和微软公司前几年一起提出的一个标签,链接加上这个标签后就不会被计算权值,搜索引擎支持nofollow属性,在很大程度上抑制博客或论坛的垃圾留言。对站长来说是一件大好事。</p><p>
        nofollow的作用</p><p>
        nofollow主要有三个作用:</p><p>
        1.防止不可信的内容,最常见的是博客上的垃圾留言与评论中为了获取外链的垃圾链接,为了防止页面指向一些拉圾页面和站点。</p><p>
        2.付费链接:为了防止付费链接影响Google的搜索结果排名,Google建议使用nofollow属性。</p><p>
        3.引导爬虫抓取有效的页面:避免爬虫抓取一些无意义的页面,影响爬虫抓取的效率。</p><p>
        有时候需要对文章进行自动处理nofollow,防止权重流失,对于做网站优化seo的来说很重要。</p><p>
        $host为不需要进行处理的站点域名,否则全部自动加上nofollow。</p><p>
        首先正则出a标签和href,然后进行每一层级判断处理。</p><p>
        如果是外链,而且没有nofollow就自动加上。</p><blockquote><ol class="dp-c list-paddingleft-2"><li><span class="comment">/**</span>&nbsp;</li><li><span class="comment">*&nbsp;自动处理外链加上rel=&quot;nofollow&quot;</span>&nbsp;</li><li><span class="comment">*/</span>&nbsp;</li><li>&nbsp;&nbsp;</li><li><span class="keyword">function</span>&nbsp;webOutUrlDispose($html)&nbsp;</li><li>&nbsp;&nbsp;</li><li>{&nbsp;</li><li>&nbsp;&nbsp;</li><li>$host&nbsp;=&nbsp;[<span class="string">&#39;www.jb51.net&#39;</span>,&nbsp;$_SERVER[<span class="string">&#39;HTTP_HOST&#39;</span>]];<span class="comment">//站点host</span>&nbsp;</li><li>&nbsp;&nbsp;</li><li>$pattern&nbsp;=&nbsp;<span class="string">&#39;/]*&gt;.*&lt;\ a=&quot;&quot;&gt;/&#39;<!--\--><!--\--></a&nbsp;href="([^"]*)"[^></span>;&nbsp;</li><li>&nbsp;&nbsp;</li><li>preg_match_all($pattern,&nbsp;$html,&nbsp;$matches);&nbsp;</li><li>&nbsp;&nbsp;</li><li><span class="keyword">for</span>&nbsp;($i&nbsp;=&nbsp;0;&nbsp;$i&nbsp;&lt;&nbsp;count($matches);&nbsp;$i++)&nbsp;{&nbsp;</li><li>&nbsp;&nbsp;</li><li><span class="keyword">if</span>&nbsp;(!strstr($matches[$i],&nbsp;<span class="string">&#39;://&#39;</span>))&nbsp;{&nbsp;</li><li>&nbsp;&nbsp;</li><li><span class="keyword">continue</span>;&nbsp;</li><li>&nbsp;&nbsp;</li><li>}&nbsp;</li><li>&nbsp;&nbsp;</li><li>$array&nbsp;=&nbsp;parse_url($matches[$i]);&nbsp;</li><li>&nbsp;&nbsp;</li><li><span class="keyword">if</span>&nbsp;(in_array($array[<span class="string">&#39;host&#39;</span>],&nbsp;$host))&nbsp;{&nbsp;</li><li>&nbsp;&nbsp;</li><li><span class="keyword">continue</span>;&nbsp;</li><li>&nbsp;&nbsp;</li><li>}&nbsp;</li><li>&nbsp;&nbsp;</li><li><span class="keyword">if</span>&nbsp;(!strstr($matches[$i],&nbsp;<span class="string">&#39;rel=&#39;</span>))&nbsp;{&nbsp;</li><li>&nbsp;&nbsp;</li><li>$yuan&nbsp;=&nbsp;$matches[$i];&nbsp;</li><li>&nbsp;&nbsp;</li><li>$matches[$i]&nbsp;=&nbsp;str_replace(<span class="string">&#39;&lt;a&#39;</span>,&nbsp;<span class="string">&#39;&lt;a&nbsp;rel=&quot;nofollow&quot;&#39;</span>,&nbsp;$matches[$i]);&nbsp;</li><li>&nbsp;&nbsp;</li><li>$html&nbsp;=&nbsp;str_replace($yuan,&nbsp;$matches[$i],&nbsp;$html);&nbsp;</li><li>&nbsp;&nbsp;</li><li>}&nbsp;</li><li>&nbsp;&nbsp;</li><li>}&nbsp;</li><li>&nbsp;&nbsp;</li><li><span class="keyword">return</span>&nbsp;$html;&nbsp;</li><li>&nbsp;&nbsp;</li><li>}&nbsp;</li></ol></blockquote><p>
        dedecms使用的话,需要在/include/extend.func.php下新增如上方法</p><p><strong>模板调用:</strong></p><blockquote><p>
                {dede:field.body function=&#39;webOutUrlDispose(@me)&#39;/}</p></blockquote><p>
        以上方法没有测试,各位请自行测试,织梦CMS利用php正则让文章的外链自动加nofollow</p>
頁: [1]
查看完整版本: 织梦CMS利用php正则让文章的外链自动加nofollow