我的字符串类似于以下
MATH 2822 or (PHYS 1939 and PHYS 1238)
MATH 2881 and (CHEM 2184 or PHYS 1000)
MATH 2881 and (CHEM 2184 or PHYS 1000) or ELEC 2921
MATH 2881 and ELEC 2921
基本上我想对它们做explode()
来分割要求,但爆炸不应该影响括号内的任何内容。
例如:
$str = MATH 2881 and (CHEM 2184 or PHYS 1000) or ELEC 2921
/* explode on "or" result as follows */
$arr[0] = Math 2881 and (CHEM 2184 or PHYS 1000)
$arr[1] = ELEC 2921
如您所见,它不应该拆分括号内的两个元素。
这样做的好方法是什么?
答案 0 :(得分:1)
您可以使用多个爆炸并查找括号。
以"("作为参数。
爆炸这应该会给你一个看起来像
的数组$arr[0] = Math 2881 and;
$arr[1] = CHEM 2184 or PHYS 1000) ELEC 2921;
然后用")爆炸$ arr [1]"作为新变量可以获得的参数
$Narr[0]=CHEM 2184 or PHYS 1000;
$Narr[1]=or ELEC 2921;
然后你可以把它们放在一个完成的数组中 $ FINarr =阵列(0 => $ ARR [0],1 => $ NARR [0],2 => $ NARR [1]);
$FINarr[0]=Math 2881 and;
$FINarr[1]=HEM 2184 or PHYS 1000;
$FINarr[2]=or ELEC 2921;