Замена слова в не html тегов.

Pavel6

Новичок
Замена слова в не html тегов.

У нас есть строка:
Песня про elochka - <p>В лесу родилась elochka, в лесу она росла <img src=\"/elochka.jpg\" alt=\"elochka\"> <br> зимой и летом стройная, веселая <a href=\"http://site.ru/elochka/index.html\">elochka</a> была</p> <p>(Такая вот рагульная песенка про elochka). Как Вам наша elochka?</p>

В ней нужно заменить слово elochka на <b>elochka</b>, но это слово также встречается и в теге img элементе Alt=”elochka”, но там его заменять не нужно.

В общем нашел такой скрипт



$html = "Песня про elochka - <p>В лесу родилась elochka, в лесу она росла <img src=\"/elochka.jpg\" alt=\"elochka\"> <br> зимой и летом стройная, веселая <a href=\"http://site.ru/elochka/index.html\">elochka</a> была</p> <p>(Такая вот рагульная песенка про elochka). Как Вам наша elochka?</p>";
$substring = 'elochka';
$replacement = '<b>$2</b>';
$result = preg_replace("/((?:^|>)[^<]*)($substring)/s", '$1'.$replacement, $html);
print $result;


В нем я в принципе разобрался, но немогу понять выражения с использованием ?: в preg_replace("/((?:^|>)[^<]*)($substring)/s", '$1'.$replacement, $html);

Я думал это просто символ который может встречатся в строке, но аказывается нет. Я пробовал смотреть на сайте Php.net в разделе регулярные варажения – синтаксис, но там за символ : не чего не наше.

Не могли бы Вы мне подсказать как работает (?:^|>)
 
Сверху