А что не так?
Как выше уже говорил, если еще проверять валидность самих тегов - это уже совсем другая история.---------- Добавлено 17.02.2017 в 19:45 ----------
Не спорю, четкого ТЗ нет. Это уже из разряда проверки на валидность.
О, и тут вы не в курсе новостей, цена уже 1.5€ в час:)
Stek, по задаче "олимпиады", затерянной в недрах двух топиков, нужно вырезать все теги и оставить ссылки. Про безопасность речи и не было. Этак мы придем еще и к валидации самих тегов.
Stek, все отлично, пока на месте все открывающиеся и закрывающиеся теги. Но решение конечно уже не очень то и короткое.
http://sandbox.onlinephpfunctions.com/code/32083dd21ac45c88fd79be3671d96bce8a6b67de
silicoid, вы не поняли, он обернут в ссылку и должен остаться как есть - ссылкой с текстом со скобочками.
Если это перенести на html код, то мы увидим такую <<<ссылку>>>. Ситуация не частая, но встречается. А ссылки по задаче трогать нельзя.
Нормальные пацаны признают за собой ошибки.
miltorg, но ваше решение вернее и короче на 146% и конечно же покрывает все ситуации.
Разрешите докопаться:). Но тоже ломается об:
http://sandbox.onlinephpfunctions.com/code/462f5c5e896c1ac2a0d3bf722c9295ad28de6537
Вот вариант для скобочек.---------- Добавлено 17.02.2017 в 13:17 ----------
Я ушел с головой в js/node.js
Потому что, что ваш:
Что мой:
s/<((?!a[\s>])[^\s>]+)[^>]*>(.+?)<\/\1>/$2/gi;
Работают по одной аналогии.
s/\[(((?!(a|\/a)).+?)|(\/?[\w]+){2})\]//g;
Это не вам адресовалось:). Но все равно "бьется" строка:
Результат:
Ломается, если добавить:
[p title="b[abc]b"]bbb[/p]
А что не так?
Как выше уже говорил, если еще проверять валидность самих тегов - это уже совсем другая история.
---------- Добавлено 17.02.2017 в 19:45 ----------
demiux, у нас немного по-разному работает выпил из текста этих кодов. Видимо это из-за разной идеологии и изначально заложенных (додуманых) условий задачи
http://sandbox.onlinephpfunctions.com/code/4e1dc3b21db7217feea085728bb8b14fce1a036d
Не спорю, четкого ТЗ нет. Это уже из разряда проверки на валидность.
Ну за 1 евро в час, оно то конечно так :D
О, и тут вы не в курсе новостей, цена уже 1.5€ в час:)
Stek, по задаче "олимпиады", затерянной в недрах двух топиков, нужно вырезать все теги и оставить ссылки. Про безопасность речи и не было. Этак мы придем еще и к валидации самих тегов.
Stek, все отлично, пока на месте все открывающиеся и закрывающиеся теги. Но решение конечно уже не очень то и короткое.
http://sandbox.onlinephpfunctions.com/code/32083dd21ac45c88fd79be3671d96bce8a6b67de
silicoid, вы не поняли, он обернут в ссылку и должен остаться как есть - ссылкой с текстом со скобочками.
Если это перенести на html код, то мы увидим такую <<<ссылку>>>. Ситуация не частая, но встречается. А ссылки по задаче трогать нельзя.
Нормальные пацаны всё уже решили давно в теме:
/ru/forum/comment/14931686
Нормальные пацаны признают за собой ошибки.
Тут уже совсем что то монстроузорное получается ))) Пойду в общем работать :)
Да надо было распарсивать теги а не просто их сносить)))
miltorg, но ваше решение вернее и короче на 146% и конечно же покрывает все ситуации.
кстати. Можно мой вариант еще подсократить, preg_replace('/\[(\w+).*\](.*)\[\/\1\]/imU', '$2', $input)
Разрешите докопаться:). Но тоже ломается об:
http://sandbox.onlinephpfunctions.com/code/462f5c5e896c1ac2a0d3bf722c9295ad28de6537
Вот вариант для скобочек.
---------- Добавлено 17.02.2017 в 13:17 ----------
[offtop mode on]
кстати в Яндекс нужны хорошие программисты на Перле. С ног сбились найти не могут!
Я ушел с головой в js/node.js
мой вариант сожрал, как не странно ))
Потому что, что ваш:
так замените на preg_replace('/\[(\w+)(\]|.*\])(.*)\[\/\\1\]/imU', '$3', $input);
и на вас снова наступит счастье
Что мой:
Работают по одной аналогии.
Специально для вас, читабильность немного потерялось, но на то они и регулярные выражения.
Magic:
s/\[(((?!(a|\/a)).+?)|(\/?[\w]+){2})\]//g;Это не вам адресовалось:). Но все равно "бьется" строка:
Результат: