Помогите с регулярным выражением

Статус
В этой теме нельзя размещать новые ответы.

akhkharu

Постоялец
Регистрация
26 Июн 2007
Сообщения
110
Реакции
19
Нужно регулярное выражение для замены текста на ссылку. Например, текст «Пример1» заменяется на «<a href="http://www.primer1.ru/">Пример1</a>». Использую регулярное выражение:

Код:
/(Пример1(?![^<\.]*<\/a>))/

Но, данное выражение так же заменит текст на ссылку в следующем случае:

HTML:
<img src="image.jpg" alt="Бла бла бла Пример1 бла бла">

А этого делать, разумеется, не нужно. Пока что исключить данный вариант не получается (пробовал использовать look-behind подмаски для фильтрации предшествующего текста, однако они не поддерживают переменную длину). У кого-нибудь есть идеи?
 
Всегда удивлялся почему в регулярках нет отрицания строк, как с символами. То есть нельзя указать "не альт".

Поэтому можно пойти другим путем. Вначале обработай текст регуляркой
Код:
alt(\s*=.+?)Пример1 
заменяем на
alt$1[#########]
Потом проходи своей регуляркой. А потом простым str_replace замени [#########] обратно на Пример1
 
Спасибо, видимо придется поступить именно таким способом. Жаль, что нельзя произвести замену за один проход по тексту.
 
PHP:
$cnt=1; // количество замен
$content="...."; // текст
$key="Пример1";
$link="<a href=\"http://www.primer1.ru/\">Пример1</a>";

$content=preg_replace("/(\W)(".$key.")(\W)/i", "$1 ".$link." $3",$content,$cnt);
должно работать
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху