【问题标题】:PHP preg_match_all() MatchingPHP preg_match_all() 匹配
【发布时间】:2009-11-29 15:52:49
【问题描述】:

我想在下面匹配FDSize: <value>

Gid:    48      48      48      48
FDSize: 64
Groups: 48 425
VmPeak:   289928 kB

它来自/proc/status

<value> 不是固定长度,上面或下面的行也不是固定长度。

【问题讨论】:

  • 为什么使用 PHP?有什么问题?解析文件?想出一个正则表达式?是否总是只有一个 FDSize 你感兴趣?

标签: php regex preg-match-all


【解决方案1】:

试试这样的:

preg_match_all('`FDSize: (\\d+)`s', $subject, $matches);
print_r($matches);

【讨论】:

    【解决方案2】:

    不确定为什么/如何/何时必须这样做。我应该在发布答案之前提出问题,但我没有。不过,这里有一些方法可以解决这个问题......

    $line = 'Gid: 48 48 48 48 FDSize: 64 Groups: 48 425 VmPeak: 289928 kB';
    
    // in a loop...
    echo current( explode(' ', end( explode( 'FDSize: ', $line ) ) ) );
    
    // or
    
    preg_match_all('~fdsize: (\d+)~i', $line, $matches);
    

    【讨论】:

      【解决方案3】:
      $mystr='Gid: 48 48 48 48 FDSize: 64 Groups: 48 425 VmPeak: 289928 kB';
      $str = explode(":",$mystr);
      foreach($str as $k=>$word){
          if(strpos($word,"FDSize") !== FALSE){
              print $str[$k+1];
          }
      }
      

      【讨论】:

      • 尽可能避免循环
      【解决方案4】:

      试试

      preg_match_all("/FDSize:\s([0-9]+)/msiU", $data_in, $matches);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-01
        • 2011-08-07
        • 1970-01-01
        • 2011-10-01
        • 2014-04-08
        • 1970-01-01
        • 2011-10-18
        • 2022-01-19
        相关资源
        最近更新 更多