2011-05-28 55 views
2

我有一堆帶有html的文本。基本上我想要做的是爲本文中找到的所有鏈接添加rel =「noindex」,只有當title屬性不存在時才能找到每個鏈接。添加一個nofollow屬性來鏈接,如果沒有使用PHP的標題標籤存在

例如,如果一個鏈接看起來是這樣的:

<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。

+0

使用[簡單的HTML DOM(http://simplehtmldom.sourceforge.net/)該庫的該 – Ibu 2011-05-28 09:03:53

+0

@Ibu的開銷巨大相比於具有本地函數這樣做的困難。 – lonesomeday 2011-05-28 09:17:21

回答

2

首先使用preg match來獲得是否添加標題。

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

很簡單與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(); 

這比擺弄正則表達式更加穩定可靠。

相關問題