Система, которую я пишу, использует Markdown для изменения ссылок, но я также хочу сделать простые ссылки активными, чтобы ввод http://www.google.com
стал активной ссылкой. Для этого я использую замену регулярных выражений, чтобы найти URL-адреса и переписать их в синтаксисе Markdown. Проблема в том, что я не могу заставить регулярное выражение не анализировать ссылки уже в синтаксисе Markdown.
Я использую следующий код:
$value = preg_replace('@((?!\()https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '[$1]($1)', $value);
Это хорошо работает для простых ссылок, таких как http://www.google.com
, но мне нужно, чтобы игнорировать ссылки уже в формате Markdown. Я думал, что раздел (?! () Будет препятствовать тому, чтобы это совпало с URL, которые следуют за круглыми скобками, но казалось бы, что я ошибаюсь.
Я понимаю, что даже это не идеальное решение (если оно сработало), но это выходит за рамки моих возможностей регулярных выражений.