我有一个如下字符串(示例中的字母可以是数字或文本,可以是大写或小写或两者。如果一个值是一个句子,它应该在单引号之间):
$string="a,b,c,(d,e,f),g,'h, i j.',k";
我怎样才能爆炸得到以下结果?
Array([0]=>"a",[1]=>"b",[2]=>"c",[3]=>"(d,e,f)",[4]=>"g",[5]=>"'h,i j'",[6]=>"k")
我认为使用正则表达式将是一个快速且干净的解决方案。任何想法?
编辑: 这是我到目前为止所做的,对于括号之间有很长部分的字符串来说,这非常慢:
$separator="*"; // whatever which is not used in the string
$Pattern="'[^,]([^']+),([^']+)[^,]'";
while(ereg($Pattern,$String,$Regs)){
$String=ereg_replace($Pattern,"'\\1$separator\\2'",$String);
}
$Pattern="\(([^(^']+),([^)^']+)\)";
while(ereg($Pattern,$String,$Regs)){
$String=ereg_replace($Pattern,"(\\1$separator\\2)",$String);
}
return $String;
这将替换括号之间的所有逗号。然后我可以用逗号分解它并$separator
用原来的逗号替换。