У меня проблемы с моим Regex
Я сделал собственный BBcode для своего веб-сайта, однако я также хочу, чтобы URL-адреса также анализировались.
Я использую preg_replace, и это шаблон, используемый для идентификации URLS:
/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/is Это работает отлично, однако, если URL-адрес находится в блоке [img] [/ img], вышеупомянутый шаблон также отображает его и создает такой результат:
 //[img]http://url.com/toimg.jeg[/img] will produce this result: <img src="<a href="http://url.com/toimg.jeg" target="_blank">/> //When it should produce: <img src="http://url.com/toimg.jeg"/> 
Я попытался использовать это:
 /([^"][\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/][^"])/is 
Без везения.
Любая помощь будет оценена.
Изменить: для решения. См. Второй комментарий к ответу stema.
Попробуй это
 (?<!href=")(\b[\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/]) 
См. Здесь, в Regexr
Чтобы сделать его более общим, вы можете упростить свой lookbehind, чтобы проверить только на «=» "
 (?<!=")(\b[\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/]) 
См. Его в Regexr
  (?<!href=") является отрицательным утверждением lookbehind, оно гарантирует, что перед вашим шаблоном не будет« href = ». 
  \b – это граница слова, которая привязывает начало вашей ссылки к изменению от несловного символа слова.  без этого lookbehind будет бесполезным, и это будет соответствовать «ttp: // …» on.