Php preg_拆分和方括号

Php preg_拆分和方括号,php,regex,Php,Regex,提前谢谢,我的正则表达式很差 假设我有一个字符串,例如: [GROUP]Some Stuff[GROUP]Some more stuff[GROUP]Some other stuff 我想在[GROUP]处拆分字符串,将结果弹出到数组中,例如: Array( [0] => Some Stuff [1] => Some more stuff [2] => Some other stuff ) 使用以下命令 $groups = preg_split("[GROUP]", $p[

提前谢谢,我的正则表达式很差

假设我有一个字符串,例如:

[GROUP]Some Stuff[GROUP]Some more stuff[GROUP]Some other stuff
我想在[GROUP]处拆分字符串,将结果弹出到数组中,例如:

Array( [0] => Some Stuff [1] => Some more stuff [2] => Some other stuff )
使用以下命令

$groups = preg_split("[GROUP]", $p['features']);
但它在我的数组中留下了[和]

Array( [0] => [ [1] => ]Some Stuff[ [2] => ]Some more stuff[ [3] => ]Some other stuff )
我确信一定有一些奇特的逃逸方法,或者斜杠、括号或者其他什么方法来让这个工作正常,但是我的随机射击没有任何运气。谷歌搜索通常会告诉我如何从方括号中取出文本,但并不能完全帮助我做我想做的事情


有什么想法吗

[]
用于字符类,因此需要对其进行转义。您还需要分隔符(这里我使用
#
),因为在正则表达式中,
[]
充当分隔符:

$groups = preg_split("#\[GROUP\]#", $p['features']);
要仅返回非空组,请使用
PREG\u SPLIT\u NO\u empty

$groups = preg_split("#\[GROUP\]#", $p['features'], null, PREG_SPLIT_NO_EMPTY);
如果希望
可变,请使用
[
后跟1个或多个非
]
后跟一个
]

"#\[[^\]]+\]#"

这将在
[其他东西]
等上拆分。

如果您不想(并且如果需求允许),则无需使用正则表达式:

产生:

Array
(
    [0] => 
    [1] => Some Stuff
    [2] => Some more stuff
    [3] => Some other stuff
)
Array
(
    [0] => Some Stuff
    [1] => Some more stuff
    [2] => Some other stuff
)
如果要删除空元素并重新索引:

unset($array[0]);
$array = array_values($array);
或者,为了避免在开头或结尾出现空元素,请使用
trim()

产生:

Array
(
    [0] => 
    [1] => Some Stuff
    [2] => Some more stuff
    [3] => Some other stuff
)
Array
(
    [0] => Some Stuff
    [1] => Some more stuff
    [2] => Some other stuff
)

是的,我一直希望找到一些可以避免取出空元素的东西。似乎preg_拆分如下,但我仍处于相同的位置。@Sanfly我添加了另一个选项,以避免在拆分后执行此操作。使用
trim()
。我之所以将此标记为正确,是因为它从技术上回答了我的问题,不幸的是,结果并不是我想要的-我希望避免数组中[0]处的空元素。谢谢你的帮助!然后使用
PREG\u SPLIT\u NO\u EMPTY
作为第四个参数。