拆分字符串保持分隔符在相同的键值

时间:2017-10-22 14:34:48

标签: php split

我试图通过分隔符"]"分割字符串[F] [C] [Fa] [Co]。我想保持它的价值相同。

我遇到了问题,因为它保留了分隔符但在另一个数组字段中。

我的代码:

$str = '[F][C][Fa][Co]';
$result = preg_split('/([\]])/', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
var_dump( $result);

预期结果:

$array[0] = [F]
$array[1] = [C]
$array[2] = [Fa]
$array[3] = [Co]

我得到了什么:

array(9) { [0]=> string(2) "[F" [1]=> string(1) "]" [2]=> string(2) "[C" [3]=> string(1) "]" [4]=> string(3) "[Fa" [5]=> string(1) "]" [6]=> string(3) "[Co" [7]=> string(1) "]" [8]=> string(0) "" }

如何使分隔符转到每个值?

2 个答案:

答案 0 :(得分:1)

但你不想分裂。你想要匹配。

preg_match_all('/\[\w+\]/',$str,$matches);
var_dump($matches[0]);

答案 1 :(得分:0)

虽然我使用@Niet的方法,但这是如何解决你的问题:

你需要一个lookbehind(或零宽度断言)和PREG_SPLIT_NO_EMPTY标志来摆脱最后一个空元素:

<?php
$str = '[F][C][Fa][Co]';
$result = preg_split('/(?<=\])/', $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
var_dump( $result);

<强>结果

  

array(4){[0] =&gt; string(3)“[F]”[1] =&gt; string(3)“[C]”[2] =&gt;   string(4)“[Fa]”[3] =&gt; string(4)“[Co]”}

Demo