【问题标题】:Add a nofollow attribute to link if no title tag present using PHP如果没有使用 PHP 的标题标签,则添加一个 nofollow 属性来链接
【发布时间】:2011-05-28 09:01:08
【问题描述】:

我有一堆带有 html 的文本。基本上我想要做的是对于在这个文本中找到的所有链接,我想为每个找到的链接添加一个 rel="noindex",只有当标题属性不存在时。

例如,如果链接如下所示:

<a href="test.html">test</a>

我希望它看起来像:

<a rel="nofollow" href="test.html">test</a>

但如果链接看起来像这样:

<a title="test title" href="test.html">test</a>

我不想在其中添加 rel="nofollow" 属性。我怎样才能在 php 中做到这一点?

编辑:

对不起,我没有提到这一点,但我使用的是 PHP4。是的,我知道,但我坚持使用 PHP4。

【问题讨论】:

  • 为此使用simple html dom
  • @Ibu 与使用本机函数执行此操作的难度相比,该库的开销是巨大的。

标签: php regex dom


【解决方案1】:

很简单,DOMDocument:

$dom = new DOMDocument;
$dom->loadHTML($yourHTML);

$links = $dom->getElementsByTagName('a');
foreach ($links as $link) {
    if (!$link->hasAttribute('title')) {
        $link->setAttribute('rel', 'nofollow');
    }
}

$yourHTML = $dom->saveHTML();

这比使用正则表达式更稳定可靠。

【讨论】:

    【解决方案2】:

    首先使用preg match来获取是否添加了title。

    $str = '<a href="test.html">test</a>';
    if(!preg_match('/title=/', $str))
    {
        $str = str_replace('href=', 'rel="nofollow" href=', $str);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      相关资源
      最近更新 更多