@polyvoidex

Как вырезать многократно вложенные данные?

Имеется строка типа:

[quote][quote][quote]a[/quote]b[/quote]c[/quote]

Которую нужно привести к виду:

[quote]c[/quote]

И ещё [quote] может быть [quote="user"].
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
@dodo512
rextester.com/BCEL28233

Или так https://regex101.com/r/rufOQc/3
$re = <<<'END'
@
\G(?!\A)
(?: [^\[]+ | (?! \[/?quote). )*+ \K
(
    \[quote[^\]]*\]
    (?: [^\[]+ | (?!\[/?quote). | (?1) )*+ 
    \[/quote\]
)
| \[quote[^\]]*\] \K
@xi
END;

$str = preg_replace($re, '', $str);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Например так:
(^.*?\])(.*)\[\/quote\]
https://regex101.com/r/p2nAN3/1

А потом из средней части найти последнюю скобочку (strrpos) и отрезать ее, и все что перед ней.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы