久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

    1. <i id='7xbs4'><tr id='7xbs4'><dt id='7xbs4'><q id='7xbs4'><span id='7xbs4'><b id='7xbs4'><form id='7xbs4'><ins id='7xbs4'></ins><ul id='7xbs4'></ul><sub id='7xbs4'></sub></form><legend id='7xbs4'></legend><bdo id='7xbs4'><pre id='7xbs4'><center id='7xbs4'></center></pre></bdo></b><th id='7xbs4'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='7xbs4'><tfoot id='7xbs4'></tfoot><dl id='7xbs4'><fieldset id='7xbs4'></fieldset></dl></div>

      <tfoot id='7xbs4'></tfoot>

        <small id='7xbs4'></small><noframes id='7xbs4'>

        • <bdo id='7xbs4'></bdo><ul id='7xbs4'></ul>
      1. <legend id='7xbs4'><style id='7xbs4'><dir id='7xbs4'><q id='7xbs4'></q></dir></style></legend>
      2. PHP:在逗號上拆分字符串,但不在大括號或引號之

        PHP: split string on comma, but NOT when between braces or quotes?(PHP:在逗號上拆分字符串,但不在大括號或引號之間?)
          <i id='4zNAB'><tr id='4zNAB'><dt id='4zNAB'><q id='4zNAB'><span id='4zNAB'><b id='4zNAB'><form id='4zNAB'><ins id='4zNAB'></ins><ul id='4zNAB'></ul><sub id='4zNAB'></sub></form><legend id='4zNAB'></legend><bdo id='4zNAB'><pre id='4zNAB'><center id='4zNAB'></center></pre></bdo></b><th id='4zNAB'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='4zNAB'><tfoot id='4zNAB'></tfoot><dl id='4zNAB'><fieldset id='4zNAB'></fieldset></dl></div>
            <tbody id='4zNAB'></tbody>
              • <bdo id='4zNAB'></bdo><ul id='4zNAB'></ul>

              • <tfoot id='4zNAB'></tfoot>

                <legend id='4zNAB'><style id='4zNAB'><dir id='4zNAB'><q id='4zNAB'></q></dir></style></legend>

                  <small id='4zNAB'></small><noframes id='4zNAB'>

                  本文介紹了PHP:在逗號上拆分字符串,但不在大括號或引號之間?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  在 PHP 中,我有以下字符串:

                  In PHP I have the following string :

                  $str = "AAA, BBB, (CCC,DDD), 'EEE', 'FFF,GGG', ('HHH','III'), (('JJJ','KKK'), LLL, (MMM,NNN)) , OOO"; 
                  

                  我需要將此字符串拆分為以下部分:

                  I need to split this string into the following parts:

                  AAA
                  BBB
                  (CCC,DDD)
                  'EEE'
                  'FFF,GGG'
                  ('HHH','III')
                  (('JJJ','KKK'),LLL, (MMM,NNN))
                  OOO
                  

                  我嘗試了幾個正則表達式,但找不到解決方案.有什么想法嗎?

                  I tried several regexes, but couldn't find a solution. Any ideas?

                  更新

                  在處理格式錯誤的數據、轉義引號等時,我認為使用正則表達式并不是最好的解決方案.

                  I've decided using regex is not really the best solution, when dealing with malformed data, escaped quotes, etc.

                  感謝這里提出的建議,我找到了一個使用解析的函數,我重新編寫了它以滿足我的需要.它可以處理不同類型的括號,分隔符和引號也是參數.

                  Thanks to suggestions made on here, I found a function that uses parsing, which I rewrote to suit my needs. It can handle different kind of brackets and the separator and quote are parameters as well.

                   function explode_brackets($str, $separator=",", $leftbracket="(", $rightbracket=")", $quote="'", $ignore_escaped_quotes=true ) {
                  
                      $buffer = '';
                      $stack = array();
                      $depth = 0;
                      $betweenquotes = false;
                      $len = strlen($str);
                      for ($i=0; $i<$len; $i++) {
                        $previouschar = $char;
                        $char = $str[$i];
                        switch ($char) {
                          case $separator:
                            if (!$betweenquotes) {
                              if (!$depth) {
                                if ($buffer !== '') {
                                  $stack[] = $buffer;
                                  $buffer = '';
                                }
                                continue 2;
                              }
                            }
                            break;
                          case $quote:
                            if ($ignore_escaped_quotes) {
                              if ($previouschar!="\") {
                                $betweenquotes = !$betweenquotes;
                              }
                            } else {
                              $betweenquotes = !$betweenquotes;
                            }
                            break;
                          case $leftbracket:
                            if (!$betweenquotes) {
                              $depth++;
                            }
                            break;
                          case $rightbracket:
                            if (!$betweenquotes) {
                              if ($depth) {
                                $depth--;
                              } else {
                                $stack[] = $buffer.$char;
                                $buffer = '';
                                continue 2;
                              }
                            }
                            break;
                          }
                          $buffer .= $char;
                      }
                      if ($buffer !== '') {
                        $stack[] = $buffer;
                      }
                  
                      return $stack;
                    }
                  

                  推薦答案

                  代替 preg_split,做一個 preg_match_all:

                  $str = "AAA, BBB, (CCC,DDD), 'EEE', 'FFF,GGG', ('HHH','III'), (('JJJ','KKK'), LLL, (MMM,NNN)) , OOO"; 
                  
                  preg_match_all("/((?:[^()]|(?R))+)|'[^']*'|[^(),s]+/", $str, $matches);
                  
                  print_r($matches);
                  

                  將打印:

                  Array
                  (
                      [0] => Array
                          (
                              [0] => AAA
                              [1] => BBB
                              [2] => (CCC,DDD)
                              [3] => 'EEE'
                              [4] => 'FFF,GGG'
                              [5] => ('HHH','III')
                              [6] => (('JJJ','KKK'), LLL, (MMM,NNN))
                              [7] => OOO
                          )
                  
                  )

                  正則表達式 ((?:[^()]|(?R))+)|'[^']*'|[^(),s]+ 可以分為三部分:

                  The regex ((?:[^()]|(?R))+)|'[^']*'|[^(),s]+ can be divided in three parts:

                  1. ((?:[^()]|(?R))+),匹配括號的平衡對
                  2. '[^']*' 匹配一個帶引號的字符串
                  3. [^(),s]+ 匹配任何不包含 '(', ')' 的字符序列,',' 或空白字符
                  1. ((?:[^()]|(?R))+), which matches balanced pairs of parenthesis
                  2. '[^']*' matching a quoted string
                  3. [^(),s]+ which matches any char-sequence not consisting of '(', ')', ',' or white-space chars

                  這篇關于PHP:在逗號上拆分字符串,但不在大括號或引號之間?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  Deadlock exception code for PHP, MySQL PDOException?(PHP、MySQL PDOException 的死鎖異常代碼?)
                  PHP PDO MySQL scrollable cursor doesn#39;t work(PHP PDO MySQL 可滾動游標不起作用)
                  PHP PDO ODBC connection(PHP PDO ODBC 連接)
                  Using PDO::FETCH_CLASS with Magic Methods(使用 PDO::FETCH_CLASS 和魔術方法)
                  php pdo get only one value from mysql; value that equals to variable(php pdo 只從 mysql 獲取一個值;等于變量的值)
                  MSSQL PDO could not find driver(MSSQL PDO 找不到驅動程序)

                  • <small id='bJzQZ'></small><noframes id='bJzQZ'>

                          <tbody id='bJzQZ'></tbody>
                          <bdo id='bJzQZ'></bdo><ul id='bJzQZ'></ul>

                          <tfoot id='bJzQZ'></tfoot>
                        • <i id='bJzQZ'><tr id='bJzQZ'><dt id='bJzQZ'><q id='bJzQZ'><span id='bJzQZ'><b id='bJzQZ'><form id='bJzQZ'><ins id='bJzQZ'></ins><ul id='bJzQZ'></ul><sub id='bJzQZ'></sub></form><legend id='bJzQZ'></legend><bdo id='bJzQZ'><pre id='bJzQZ'><center id='bJzQZ'></center></pre></bdo></b><th id='bJzQZ'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='bJzQZ'><tfoot id='bJzQZ'></tfoot><dl id='bJzQZ'><fieldset id='bJzQZ'></fieldset></dl></div>
                          1. <legend id='bJzQZ'><style id='bJzQZ'><dir id='bJzQZ'><q id='bJzQZ'></q></dir></style></legend>
                            主站蜘蛛池模板: 亚洲欧美日韩中文字幕一区二区三区 | 在线免费91 | 久久国产精品偷 | 亚洲一区二区在线免费观看 | 7777在线 | 特黄小视频 | 欧美亚州综合 | 国产乱码久久久久久一区二区 | av第一页 | 午夜天堂精品久久久久 | 一区二区三区亚洲 | 日韩久久综合 | 亚洲毛片在线 | 欧美性a视频 | 久久免费精品 | 91在线免费视频 | 欧美久久精品一级黑人c片 91免费在线视频 | 成人av网站在线观看 | 国产精品一区在线播放 | 国产精品久久 | 欧美黄色一区 | 有码一区 | 欧美日韩在线免费 | 成人综合一区二区 | 成人性视频免费网站 | 高清亚洲 | 国产一区二区久久 | 亚洲 成人 在线 | 一区观看 | 免费欧美视频 | av毛片在线播放 | 国产伦精品一区二区三区精品视频 | 久久精品一区二区视频 | 日韩av在线一区二区 | 免费看欧美一级片 | 日韩欧美三区 | 国产高清免费视频 | 成人亚洲精品久久久久软件 | 日韩毛片在线免费观看 | 91精品国产一区二区三区 | 免费高清成人 |