【问题标题】:Explode array comma but not inside square brackets分解数组逗号但不在方括号内
【发布时间】:2015-07-24 04:21:53
【问题描述】:

我有一个字符串:

$var = "[Item 1],[Item 2],[Item, 3]";

当我使用爆炸时:

$var = explode(",", $var);

这也会分解方括号内的逗号。

我想退货:

[Item 1]
[Item 2]
[Item, 3]

运行我正在使用的 foreach () {} 语句。有什么想法吗?

【问题讨论】:

    标签: php arrays loops


    【解决方案1】:
    $var = "[Item 1],[Item 2],[Item, 3]";
    
    $var = explode("],[", $var);
    
    print_r($var);
    

    --doh 忘记了分隔符丢失了,所以将那些 [] 放回原处是一个粗略的选择:

    <?php
    $var = "[Item 1],[Item 2],[Item, 3]";
    
    $var = explode("],[", $var);
    
    foreach ($var as $v){
    
      if(substr($v,0,1)!='['){
       $v='['.$v; 
      }
    
        if(substr($v,-1)!=']'){
    $v=$v.']'; 
      }
    
        $out[]=$v; 
    
    
    
    }
    echo '<pre>';
    print_r($out);
    

    切换到正则表达式拆分可能会更好,我会在几秒钟内写出来

    最后的性感回答:

    <?php
    $var = "[Item 1],[Item 2],[Item, 3]";
    
    
    $var = preg_split('/(\B,\B)/', $var);
    
    
    echo '<pre>';
    print_r($var);
    

    演示:http://codepad.viper-7.com/6qgSzB

    【讨论】:

      【解决方案2】:

      它不会按照你的意愿工作。但是可以用

      $var = "[Item 1],[Item 2],[Item, 3]";
      
      $varArr = explode("],", $var);
      
      $newArr= array();
      foreach($varArr as $key=>$val)
          $newArr[$key] = $val . "]";
      
      echo "<pre>";
      print_r($newArr);
      echo "</pre>";
      

      【讨论】:

        【解决方案3】:

        使用正则表达式提取这些信息怎么样?

        $var = "[Item 1],[Item 2],[Item, 3]";
        preg_match_all("(\[.+?\])", $var, $result);
        
        print_r($result[0]);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多