Форум на Kuban.ru (http://forums.kuban.ru/)
-   Разработка программ (http://forums.kuban.ru/f1024/)
-   -   Как сделать регулярку, обрабатывающую только нужные ссылки? (http://forums.kuban.ru/f1024/kak_sdelat-_regulyarku_obrabatyvayushuyu_tol-ko_nuzhnye_ssylki-7672253.html)

E34 15.04.2016 13:10

Как сделать регулярку, обрабатывающую только нужные ссылки?
 
Добрый день!
Есть некоторый текст. В нём встречаются ссылки нескольких видов: просто ссылка, например [url]http://vk.com/id99999999999999[/url], и ссылка, содержащая 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 видосы.
Заранее благодарю

wayerr 15.04.2016 16:57

[url]http://www.php.su/preg_replace_callback[/url]

и использовать обычный regexp который просто находит сслыки, в коллбеке ты уже посмотришь на домен и решишь что с ней делать

Marr 16.04.2016 12:25

Так ты выложи свой "некоторый текст".

E34 18.04.2016 14:36

1-wayerr > благодарю, это самое жизненное =)


Текущее время: 01:03. Часовой пояс GMT +3.