在时间间隔为

时间:2017-05-02 15:01:57

标签: php arrays regex preg-match-all

我的一些文字看起来像这样:

  

Vind vid marken
   12-14UTC:OmrådeE3a:N / 2-5 knop,byar upp直到13 knop。
   OmrådeE2b:N / 2-5 knop,byar upp至14 knop    OmrådeE1a,E1b:NV-N / 0-6 knop,byar upp至15 knop    OmrådeE2a:N / 1-6 knop,byar upp直到12 knop。

     14-16UTC:OmrådeE1b:N / 2-6 knop,byar upp直到16 knop。
   OmrådeE3a:N / 3-6 knop    OmrådeE2b:N / 3-5 knop    OmrådeE2a:N / 1-5 knop,byar upp直到12 knop    OmrådeE1a:N / 0-6 knop,byar upp直到14 knop。

     

16-18UTC:OmrådeE1b:N-NO / 1-7 knop,byar upp直到15 knop。
   OmrådeE2a,E2b:N / 0-4 knop,byar upp直到12 knop    OmrådeE1a:N-NO / 3-8 knop,byar upp直到15 knop    OmrådeE3a:N-NO / 1-6 knop,byar upp直到13 knop。

     

18-20UTC:OmrådeE2b,E3a:N-NO / 1-5 knop    OmrådeE1b,E2a:N-NO / 0-5 knop,byar upp至11 knop    OmrådeE1a:N-NO / 1-7 knop。

我的目标是找到正确位置和时间的价值 正如您所看到的那样,文本在时间和区域中被欺骗(例如E3a),并且它在下一个时间间隔内重复相同的区域。
使用此正则表达式:preg_match_all("/(\d{2}-\d{2})UTC/", $text, $arr);

我得到这个数组:

array(2  
      0 =>  array(4  
          0 =>  12-14UTC  
          1 =>  14-16UTC  
          2 =>  16-18UTC  
          3 =>  18-20UTC  
      )  

      1 =>  array(4  
          0 =>  12-14  
          1 =>  14-16  
          2 =>  16-18  
          3 =>  18-20  
     )  
)  

现在时间是UTC时间14:52 我怎么...让我说回声$arr[1][1],因为我知道当前的时间在14到16之间? 我需要正则表达式是它上面的方式,或者至少保持$arr[0],因为我需要在下一个正则表达式模式中。

我被困在这里,因为我无法弄清楚如何知道在下一个正则表达式中我需要的时间间隔。

1 个答案:

答案 0 :(得分:1)

尝试

preg_match_all("(\d{2})-(\d{2})UTC", $text, $arr);

应该返回:

array(3
      0 =>  array(4
        0   =>  12-14UTC
        1   =>  14-16UTC
        2   =>  16-18UTC
        3   =>  18-20UTC
    )
  1 =>  array(4
        0   =>  12
        1   =>  14
        2   =>  16
        3   =>  18
    )
  2 =>  array(4
        0   =>  14
        1   =>  16
        2   =>  18
        3   =>  20
    )
)

从那里你可以使用array [1]和array [2]的值来比较你当前的小时(使用date("G"))迭代或回调。

由于您将从正则表达式中提取时间值,我还建议您尽可能使用intval()进行清理并错误检查输入。