获取preg-split的分隔符数组

时间:2015-08-31 10:02:57

标签: php preg-split

字符串:

preg_split(\s?AND\s?|\s?OR\s?, $string);

PHP:

["test", "test2", "test3", "test4"]

结果:

["test", "test2", "test3", "test4"]
["AND", "OR", "AND"]

通缉结果:

#parent {
  display: table;
  width: 100%;
}
#parent>div {
  display: table-cell;
  background: lightblue;
}
#parent>div:first-child {
  background: lightgreen;
}

我怎样才能得到这个结果?

2 个答案:

答案 0 :(得分:2)

preg_split选项使用PREG_SPLIT_DELIM_CAPTURE时分隔捕获的分隔符的方法。

$string = "test AND test2 OR test3 AND test4";

$arr = preg_split('~\s*\b(AND|OR)\b\s*~', $string, -1, PREG_SPLIT_DELIM_CAPTURE);

$andor = [];
$test = [];

foreach($arr as $k=>$v) {
    if ($k & 1)
        $andor[] = $v;
    else
        $test[] = $v;
}

print_r($test);
print_r($andor);

$k & 1是按位运算符AND。当索引$k为奇数时,这意味着第一位设置为1,然后$k & 1返回1。 (除非您使用PREG_SPLIT_NO_EMPTY,否则分隔符总是奇怪的索引。)

答案 1 :(得分:0)

您可以使用preg_splitpreg_match_all作为

$str = "test AND test2 OR test3 AND test4";
$arr1 = preg_split('/\b(AND|OR)\b/', $str);
preg_match_all('/\b(AND|OR)\b/', $str, $arr2);
print_r($arr1);
print_r($arr2[0]);

Demo

否则,只需使用@mario使用PREG_SPLIT_DELIM_CAPTURE

建议的答案