PHP Regex, чтобы удалить несвязанный контент, но оставить контент внутри блоков - PullRequest
0 голосов
/ 28 марта 2011

Мне нужна помощь, чтобы исправить мои регулярные выражения, скажем, если есть текст, как:

bla bla [bla1]something[/bla1] bla bla [bla2]something else[/bla2] bla bla bla

Я хочу, чтобы все в bla1 и bla2 были удалены, включая эти теги. Кто-нибудь может мне помочь?

Спасибо.

Ответы [ 3 ]

1 голос
/ 28 марта 2011

Если вам нужно просто удалить теги, попробуйте:

$str = 'bla bla [bla1]something[/bla1] bla bla [bla2]something else[/bla2] bla bla bla';

$result = preg_replace('~\[([^\]]+)\].*?\[/\\1\]~', '', $str);

var_dump($result);
0 голосов
/ 28 марта 2011

вам не нужно регулярное выражение для этого ... Я бы использовал strpos, explode и substr для этой функциональности. дальнейшее чтение:

http://php.net/manual/en/function.strpos.php

http://php.net/manual/en/function.substr.php

http://php.net/manual/en/function.explode.php

http://php.net/manual/en/function.str-replace.php

например:

замените "[бла]" и [/ бла] на ~ бла ~, а затем взорвитесь на ~ бла ~.

0 голосов
/ 28 марта 2011

Используйте регулярное выражение:

\[bla1\]\s*(((?!\[bla1\]|\[/bla1\]).)+)\s*\[/bla1\]

, чтобы получить все между bla1 и bla2, а затем вы можете удалить его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...