首页 > 后端开发 > php教程 > 拆分为数组,难题是 C(x, y("z" 2, 0)), 是一个整体

拆分为数组,难题是 C(x, y("z" 2, 0)), 是一个整体

WBOY
发布: 2016-06-13 12:21:00
原创
1078 人浏览过

拆分为数组,难点是 C(x, y("z", 2, 0)), 是一个整体。

将字符串 $s='A, B, C(x, y("z", 2, 0)), D, E';
拆分为数组,难点是 C(x, y("z", 2, 0)), 是一个整体。

想要的结果:
array(
  'A', 
  'B', 
  'C(x, y("z", 2, 0))', 
  'D',
  'E');
------解决思路----------------------

$s='A, B, C(x, y("z", 2, 0)), D, E';<br />$keywords = preg_split("/\,\s(?=[A-Z])/", $s);<br />var_dump($keywords);
登录后复制

------解决思路----------------------
$s='A, B, C(X, Y("Z", 1, 0)), D(X, Y("Z", 2, 0)), E,F(X, Y("Z", 3, 0))';<br />//提取获取里面的内容<br />preg_match_all("/\(.*?\)\)/",$s,$match);//这部分正则可以自行修改<br />$s = str_replace($match[0],'%',$s);//将整体的替换成某个符合,%百分号也可以自己选定<br />$exs = explode(',',$s);<br />$i = 0;<br />foreach($exs as $key=>$value){<br />	if (strpos($value,"%") !== false) {<br />		<br />		$exs[$key] = str_replace('%',$match[0][$i],$value);<br />		$i ++;<br />	}<br />}<br />var_dump($exs);
登录后复制

帮你在复杂化了
------解决思路----------------------
所以这种事情不是正则能够胜任的,老老实实写个函数比绞尽脑汁写正则实惠的多
$s='A, B, C(x, Y("z", 2, 0)), D, E';<br />print_r(foo($s));<br /><br />function foo($s) {<br />  $r = array();<br />  $m = 0;<br />  $t = '';<br />  for($i=0; $i<strlen($s); $i++) {<br />    if($s{$i} == '(') $m++;<br />    if($s{$i} == ')') $m--;<br />    if($m == 0 && $s{$i} == ',') {<br />      if($t) $r[] = $t;<br />      $t = '';<br />    }else $t .= $s{$i};<br />  }<br />  if($t) $r[] = $t;<br />  return $r;<br />}
登录后复制
Array<br />(<br />    [0] => A<br />    [1] =>  B<br />    [2] =>  C(x, Y("z", 2, 0))<br />    [3] =>  D<br />    [4] =>  E<br />)<br /><br />
登录后复制

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板