首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用preg-split获取分隔符的数组

使用preg-split获取分隔符的数组
EN

Stack Overflow用户
提问于 2015-08-31 18:02:57
回答 2查看 61关注 0票数 1

字符串:

代码语言:javascript
复制
"test AND test2 OR test3 AND test4"

PHP:

代码语言:javascript
复制
preg_split(\s?AND\s?|\s?OR\s?, $string);

结果:

代码语言:javascript
复制
["test", "test2", "test3", "test4"]

想要的结果:

代码语言:javascript
复制
["test", "test2", "test3", "test4"]
["AND", "OR", "AND"]

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

EN

回答 2

Stack Overflow用户

发布于 2015-08-31 21:12:03

preg_splitPREG_SPLIT_DELIM_CAPTURE选项一起使用时分隔捕获的分隔符的方法。

代码语言:javascript
复制
$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)。

票数 2
EN

Stack Overflow用户

发布于 2015-08-31 18:27:28

您可以使用preg_splitpreg_match_all作为

代码语言:javascript
复制
$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]);

否则,只需使用PREG_SPLIT_DELIM_CAPTURE使用@mario建议的答案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32308684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档