我试图通过分隔符"]"分割字符串[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) "" }
如何使分隔符转到每个值?
答案 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]”}