字符串:
"test AND test2 OR test3 AND test4"PHP:
preg_split(\s?AND\s?|\s?OR\s?, $string);结果:
["test", "test2", "test3", "test4"]想要的结果:
["test", "test2", "test3", "test4"]
["AND", "OR", "AND"]怎样才能得到这个结果呢?
发布于 2015-08-31 21:12:03
将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)。
发布于 2015-08-31 18:27:28
您可以使用preg_split和preg_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]);否则,只需使用PREG_SPLIT_DELIM_CAPTURE使用@mario建议的答案
https://stackoverflow.com/questions/32308684
复制相似问题