【问题标题】:parsing string for all matching patterns in php解析php中所有匹配模式的字符串
【发布时间】:2015-06-22 22:13:37
【问题描述】:

我想匹配[[WHATEVER]]等所有模式

这两个括号内的文字可以是大写或小写,可以以空格开头或以空格结尾,并且可以由空格分隔的两个或多个单词组成

$string = "The [[QUICK]] brown [[FOX]] jumped over [[whatever]]";

parse $string; //I would like an result to be like array

array( 0 => "[[QUICK]]", 1 => "[[FOX]]", 2 => "[[whatever]]") 

【问题讨论】:

    标签: php arrays regex string parsing


    【解决方案1】:

    你可以像这样匹配它们:

      $re = "/\\[{2}.*?\\]{2}/"; 
      $str = "The [[QUICK]] brown [[FOX]] jumped over [[whatever]]"; 
      preg_match_all($re, $str, $matches);
      print_r($matches[0]);
    

    sample program 的输出:

    Array                                                                                                                                                                                                                                                  
    (                                                                                                                                                                                                                                                      
        [0] => [[QUICK]]                                                                                                                                                                                                                                   
        [1] => [[FOX]]                                                                                                                                                                                                                                     
        [2] => [[whatever]]                                                                                                                                                                                                                                
    )    
    

    【讨论】:

    • 非常感谢你这个“比光还快”的回答;)
    • \[\[[^]]*]] 就够了。
    【解决方案2】:
    \[\[[^\]]*\]\]
    

    应该这样做。

    See demo

    $re = "/\\[\\[[^\\]]*\\]\\]/im";
    $str = "The [[QUICK]] brown [[FOX]] jumped over [[whatever]]";
    
    preg_match_all($re, $str, $matches);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多