Условие НЕ в выражении

Печать RSS
399

Автор
Господин ПЖ
0
Помогите составить регулярное выражение обработки ссылок

задача в следующем
есть к примеру ссылка http:\\xxx.ru есть такая ссылка [url=http:\\xxx.ru]site[\url]

все это парсится вот таким выражение

$msg = preg_replace_callback('~\[url=(https?://.+?)\](.+?)\[/url\]|(https?://[0-9a-zа-яё/.;?=\(\)\_\-&%#]+)~ui', 'url_replace', $msg);

теперь к примеру я ввел тег img

[img]http:\\xxx.ru/images/logo.jpeg[/img]

которая парсится как <img src="http:\\xxx.ru/images/logo.jpeg" alt="image">

нужно доработать регулярку чтобы он ссылки такие не трогал

что-то вроде этого
$msg = preg_replace_callback('~\[url=(https?://.+?)\](.+?)\[/url\]|(?!src=\")(https?://[0-9a-zа-яё/.;?=\(\)\_\-&%#]+)~ui', 'url_replace', $msg);
Изменил: Вантуз-мен (09.06.2016 / 15:40)
Автор
Господин ПЖ
0
Кажется разобрался, это называется отрицательное заглядывание назад
$msg = preg_replace_callback('~\[url=(https?://.+?)\](.+?)\[/url\]|(?<!src\=\")(https?://[0-9a-zа-яё/.;?=\(\)\_\-&%#]+)~ui', 'url_replace', $msg);
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск