Xpoint
   [напомнить пароль]

Регулярное выражение, обрамляющее ссылку в тексте в теги, но не все

Метки: [без меток]
2016-04-15 09:31:39 [обр] E34[досье]

Добрый день!
Есть некоторый текст. В нём встречаются ссылки нескольких видов: просто ссылка, например http://vk.com/id99999999999999, и ссылка, содержащая youtube
задача состоит в том, чтобы обернуть обычные ссылки в теги <A> а ютубовские ссылки обернуть в IFRAME
оборачиваю сначала в IFRAME ссылки на ютуп
 $regex = "~(http)?s?\\:?[/]{0,2}[w]{0,3}\\.?youtu.*\\?v=(\\S*)~i"; // регулярочка для ютупа
 $value = preg_replace ($regex, "<iframe style='padding-right: 10px;' align='left' width='360' height='287' src='https://www.youtube.com/embed/\\2' frameborder='0' allowfullscreen='1'></iframe>", $value);

а далее, я хочу обернуть в теги <A> ссылки не содержащие ключевого слова youtube
Пытался использовать регулярное выражение (https?\:\/\/www\.)(?!youtube\.\S+)\s? но оно не позволяет захватить выражение скобками, чтобы подставить его в preg_replace — возвращается только то, что содержится в $1, а если обернуть всё выражение скобками, то возвращается вся строка, что ломает уже обёрнутые в iframe видосы.
Заранее благодарю

спустя 16 часов [обр] Marat Tanalin(3/78)[досье]

Видимо, речь о PHP.

Вместо preg_replace() используйте preg_replace_callback, для каждого совпадения вызывающую callback-функцию, в которой вы уже условным образом можете делать разные вещи в зависимости от найденной подстроки.

Powered by POEM™ Engine Copyright © 2002-2005