$var = "a=1,b=2,c='da,=cheng'";
1、把上面的字符串,切分成$var = array('a=1','b=2','c=da,=cheng')
2、最终目标是 $var = array('a'=>1,'b'=>2,'c'=>'da,=cheng')
如果有了1,弄出个2的方法,我的作法是用字符串分割函数,切割到第一个“=”刚才求得的正则
$arr=preg_split('/,(?=\w)/',$var,-1,PREG_SPLIT_NO_EMPTY);
print_r($arr);exit;
foreach($arr as $v){
$t=explode('=',$v,2);
$ar[$t[0]]=$t[1];
}
print_r($ar);
应付我这个变量是可以的,但是稍微修改就不行了。
变量改成 $var = "a=1,b=2,c='da,asd大成'", 结果就不对了!
1、把上面的字符串,切分成$var = array('a=1','b=2','c=da,=cheng')
2、最终目标是 $var = array('a'=>1,'b'=>2,'c'=>'da,=cheng')
如果有了1,弄出个2的方法,我的作法是用字符串分割函数,切割到第一个“=”刚才求得的正则
$arr=preg_split('/,(?=\w)/',$var,-1,PREG_SPLIT_NO_EMPTY);
print_r($arr);exit;
foreach($arr as $v){
$t=explode('=',$v,2);
$ar[$t[0]]=$t[1];
}
print_r($ar);
应付我这个变量是可以的,但是稍微修改就不行了。
变量改成 $var = "a=1,b=2,c='da,asd大成'", 结果就不对了!
$var = "a='ab,c=ac',b=2,d=3,c='da,asd大成'";
再改一下,又不行了,很难搞出一个根据","分割,但是前提是","不在=后面的引号内
$var = "a='ab,c\'=ac',b='',d=3,c='da,asd大成'";
echo $var,'<br>';
$txt = preg_replace('/("|\')([^,]*)(,)([^,]*)\\1/', "\\1\\2=-=-=comma=-=-=\\4\\1", $var);
echo $txt,'<br>';
$arr = explode(',', $txt);
foreach($arr as $v){
$t=explode('=',$v,2);
$ar[$t[0]]=str_replace('=-=-=comma=-=-=', ',', $t[1]);
}
print_r($ar);我的兼容性好!
就不对了,继续等待高手的答案 !