У меня есть куча текста с 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.
Сначала используйте preg match, чтобы получить, если заголовок будет добавлен.
$str = '<a href="test.html">test</a>'; if(!preg_match('/title=/', $str)) { $str = str_replace('href=', 'rel="nofollow" href=', $str); }
Совсем просто с 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();
Это гораздо более стабильно и надежно, чем с регулярным выражением.