<?php
// Входная строка
$text = '<a href="/go.php?ff">Ссылка 1</a><img src="/images/foo.jpg" alt="img"><a href="/some.php?helloworld"></a><p>Проверочка</p><a href="/go.php?dvb">Ссылка 2</a>';
// Количество ссылок, которое будет обёрнуто в <div>
$links_count = 0;
// Служебная перменная (смещение, чтобы избежать ненужных повторных замен)
$offset = 0;
// Считаем количество ссылок, которое надо обернуть
$links_count = substr_count($text, '<a href="/go.php');
// Если таких ссылок нет, то die
if(!$links_count) die;
// Длина строки закрывающего тега ссылки
$closing_tag_length = strlen('</a>');
// Создание текстового поля
echo '<textarea readonly rows="35" cols="80">';
// Вывод входной строки и количества оборачиваемых ссылок
echo 'Входная строка:', PHP_EOL, PHP_EOL, $text, PHP_EOL, PHP_EOL, '---------------------------', PHP_EOL;
echo 'Обнаружено ссылок, подлежащих замене: ', $links_count, PHP_EOL, PHP_EOL;
// Первоначальная и быстрая замена всех открывающих тегов (добавление перед ними <div>)
$text = str_replace('<a href="/go.php', '<div><a href="/go.php', $text);
// Цикл для замены "</a>" на "</a></div>" для тех ссылок, в которых есть go.php
for($i = 0; $i < $links_count; $i++)
{
// Вычисление стартовой позиции
$link_start = strpos($text, '<a href="/go.php', $offset);
// Вычисление позиции закрывающего тега
$link_end = strpos($text, '</a>', $link_start);
// Сохранение смещения
$offset = $link_end;
// Замена
$text = substr_replace($text, '</div>', $link_end + $closing_tag_length, 0);
}
// Вывод выходной строки
echo '---------------------------', PHP_EOL;
echo 'Выходная строка:', PHP_EOL, PHP_EOL;
echo $text, PHP_EOL;
echo '</textarea>';
?>