PHP Regex删除不相关的内容但将内容留在块中

时间:2011-03-28 00:38:40

标签: php regex tags

我需要帮助来修复我的正则表达式,比如说有文字如下:

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

我希望删除bla1和bla2中的所有内容,包括那些标记。有人能帮助我吗?

谢谢。

3 个答案:

答案 0 :(得分:1)

如果只需删除标签,请尝试:

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

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

var_dump($result);

答案 1 :(得分:0)

使用正则表达式:

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

获取bla1和bla2之间的所有内容,然后你可以删除它

答案 2 :(得分:0)

你不需要正则表达式...我会使用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

例如:

替换“[bla]”和[/ bla]为~bab~而不是爆炸~bab~。