我有一堆带有html的文字。基本上我想要做的是对于本文中找到的所有链接,我想在每个链接中添加一个rel =“noindex”,只有当title属性不存在时才会找到。
例如,如果链接如下所示:
<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 :(得分: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();
这比使用正则表达式更加稳定可靠。
答案 1 :(得分:2)
首先使用preg match来获取是否添加了标题。
$str = '<a href="test.html">test</a>';
if(!preg_match('/title=/', $str))
{
$str = str_replace('href=', 'rel="nofollow" href=', $str);
}