【问题标题】:How to use the explode function in PHP using 2 delimeters instead of 1?如何在 PHP 中使用 2 个分隔符而不是 1 个分隔符来使用explode 函数?
【发布时间】:2010-07-25 18:10:04
【问题描述】:

假设我有以下:

$string = "(a) (b) (c)";

我将如何分解它以获取括号内的内容。如果字符串的内容仅由一个符号而不是 2 分隔,我会使用:

$string = "a-b-c";
explode("-", $string);

但是当使用2个分隔符来封装要爆炸的项目时,如何做到这一点呢?

【问题讨论】:

    标签: php explode


    【解决方案1】:

    您必须改用preg_splitpreg_match

    例子:

    $string = "(a) (b) (c)";
    print_r(preg_split('/\\) \\(|\\(|\\)/', $string, -1, PREG_SPLIT_NO_EMPTY));
    
    大批 ( [0] => 一个 [1] => b [2] => c )

    注意顺序很重要。

    【讨论】:

    • 嗨,不太擅长编写进入 preg split 函数所需的正则表达式规则。这将如何匹配 () 中的内容?
    【解决方案2】:

    如果没有嵌套括号,可以使用正则表达式。

    $string = "(a) (b) (c)";
    $res = 0;
    preg_match_all("/\\(([^)]*)\\)/", $string, $res);
    var_dump($res[1]);
    

    结果:

    array(3) {
      [0]=>
      string(1) "a"
      [1]=>
      string(1) "b"
      [2]=>
      string(1) "c"
    }
    

    http://www.ideone.com/70ZlQ

    【讨论】:

      【解决方案3】:

      如果您知道字符串将始终采用(a) (b) (c) 的形式,每对括号之间恰好有一个空格,并且开头或结尾没有字符,则可以避免使用正则表达式函数:

      $myarray = explode(') (', substr($mystring, 1, -1));
      

      【讨论】:

        【解决方案4】:

        试试下面的代码:

        <?php
          $s="Welcome to (London) hello ";    
          $data = explode('(' , $s );    
          $d=explode(')',$data[1]);    
          print_r($data);    
          print_r($d);    
        ?>        
        

        输出:

        Array ( [0] => Welcome to [1] => London) hello )
        Array ( [0] => London [1] => hello )
        

        【讨论】:

          【解决方案5】:

          也许使用带有交替模式的 preg_split:

          http://www.php.net/manual/en/function.preg-split.php

          【讨论】:

            【解决方案6】:

            如果你的分隔符是这样一致的,那么你可以这样做

            $string = "(a) (b) (c)";
            $arr = explode(") (", $string);
            // Then simply trim remaining parentheses off.
            $arr[0] = trim($arr[0], "()");
            end($arr) = trim($arr[0], "()");
            

            【讨论】:

            • 好点!不管怎样,OP 仍然可以在 ") (" 上爆炸并得到他需要的东西。
            【解决方案7】:

            你可以试试preg_split()函数。

            【讨论】:

              猜你喜欢
              • 2013-10-18
              • 1970-01-01
              • 1970-01-01
              • 2017-09-06
              • 1970-01-01
              • 1970-01-01
              • 2017-07-03
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多