Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.08.2016, 16:14
Аспирант
Отправить личное сообщение для rusbody Посмотреть профиль Найти все сообщения от rusbody
 
Регистрация: 18.02.2011
Сообщений: 51

Регулярное выражение: Как выбрать все ссылки без ббкода?
Есть регулярное выражение:
$text = preg_replace("~(?<!\[url\])((http|https|ftp|ftps)://)([а-яА-Яa-zA-Z.\/0-9-+_?=&%\#;])+~siu", '[url]$0[/url]', $text);


Которое ищет все ссылки на странице без тэга и оборачивает их в код. Чтобы не оборачивать уже обёрнутую ссылку, добавлено отрицание тэга
(?<!\[url\])


Проблема возникла с тэгами
[url=ссылка]ссылка[/url]
. Отрицание
(?<!\[url\])
не помогает.

Как быть?
Ответить с цитированием
  #2 (permalink)  
Старый 27.08.2016, 16:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от rusbody
ищет все ссылки на странице без тэга
И откуда они эти ссылки, если другие оформлены "по правилам"?
Ответить с цитированием
  #3 (permalink)  
Старый 27.08.2016, 21:13
Аватар для freethetan
Интересующийся
Отправить личное сообщение для freethetan Посмотреть профиль Найти все сообщения от freethetan
 
Регистрация: 15.11.2013
Сообщений: 28

А как на счет ссылок с "relative uri"?
Не проще искать tags|properties с url указателем?
Дальше проще...
выборка всего что в скобках...
Ответить с цитированием
  #4 (permalink)  
Старый 30.08.2016, 10:14
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от laimas
ткуда они эти ссылки
Написал вручную и все.
Ответить с цитированием
  #5 (permalink)  
Старый 30.08.2016, 13:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от warren buffet
Написал вручную и все.
Ну а далее? Есть ссылки оформленные ВВ тегом, а есть нет. Вопрос - правильно ли все под одну гребенку не считаясь с тем, что пользователь хотел именно так как ввел?

А такое паскудство наблюдается не только со ссылками, но еще и превращает в рожицу, хотя написанное двоеточие и закрывающая скобка не обязательно означает ввод пользователем смайла.

Я без тебя прекрасно понимаю откуда они. Это вопрос автору для "задуматься".
Ответить с цитированием
  #6 (permalink)  
Старый 07.09.2016, 01:23
Профессор
Отправить личное сообщение для psiklop Посмотреть профиль Найти все сообщения от psiklop
 
Регистрация: 04.03.2015
Сообщений: 163

держи:
$text = preg_replace("~(\[url(?U)(=.*)?\])?((http|https|ftp|ftps)://)([а-яА-Яa-zA-Z.\/0-9-+_?=&%\#;]+)(\[\/url\])?~siu", '[url$2]$3$5[/url]', $text);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по replace. Как заменить все точки в строке? Pluto Общие вопросы Javascript 14 21.04.2017 12:32
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Подскажите как в VLC плеере переключать канал без перезагрузки страницы? mff Events/DOM/Window 0 10.05.2010 17:28
Как сделать, чтобы 2 ссылки отображались как hover при наведении мышкой на любую? Ava Элементы интерфейса 5 19.05.2009 23:24
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37